如何以编程方式从 Android 的默认应用列表中删除应用?
Posted
技术标签:
【中文标题】如何以编程方式从 Android 的默认应用列表中删除应用?【英文标题】:How to programmatically remove app from Default Apps List for android? 【发布时间】:2016-12-16 13:52:44 【问题描述】:我已经制作了一个用于在 android 中查看 pdf 文档的应用程序。当我尝试 从我的应用程序外部打开任何 pdf 我的应用程序显示为一个选项 使用 Dialog 在 Complet 操作中查看该 pdf。我正在使用 mupdf 库作为我的应用程序中的一个模块。我该如何解决这个问题?
这是我的 AndroidManifest.xml 文件的样子:-
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.inevitable.org.shatayushi">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:name=".GlobalClass"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ShatayushiActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".PayUActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity
android:name="com.artifex.mupdfdemo.MuPDFActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/vnd.ms-xpsdocument"/>
<data android:mimeType="application/xps"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/pdf"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/x-cbz"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/epub+zip"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
<data android:pathPattern=".*\\.xps"/>
<data android:host="*"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
<data android:pathPattern=".*\\.pdf"/>
<data android:host="*"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
<data android:pathPattern=".*\\.cbz"/>
<data android:host="*"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
<data android:pathPattern=".*\\.epub"/>
<data android:host="*"/>
</intent-filter>
</activity>
<activity android:name="com.artifex.mupdfdemo.OutlineActivity"
android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
android:label="@string/outline_title"
>
</activity>
<activity
android:name="com.artifex.mupdfdemo.PrintDialogActivity"
android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
android:label="@string/print">
</activity>
</application>
</manifest>
感谢任何帮助或建议。谢谢。
【问题讨论】:
检查***.com/questions/8398514/hide-application-icon/…和***.com/questions/3760276/… 【参考方案1】:由于我看不到意图过滤器的代码 sn-p,我的建议是参考 How can I have my app appear in the intent chooser only for certain urls?
此链接也可能对您的情况有所帮助I don't want my app to appear on the chooser dialog when opening URL's
希望这会有所帮助。
【讨论】:
【参考方案2】:这意味着有一个意图过滤器来获取操作。 看这里https://developer.android.com/guide/components/intents-filters.html#Receiving
我不知道 mupdf 库,但我猜清单中有类似以下代码的内容(只是一个示例):
<activity android:name="ShareActivity">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
【讨论】:
这样您就可以尝试使用此路径从意图过滤器中删除这些行以上是关于如何以编程方式从 Android 的默认应用列表中删除应用?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式更改整个应用程序中的字体大小,Android?