如何以编程方式从 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上的渐变中获取颜色列表

如何以编程方式更改整个应用程序中的字体大小,Android?

如何以编程方式获取 iPhone 的铃声列表

如何在android中以编程方式显示联系人列表?

如何以编程方式连接到 Android 中的特定 Wi-Fi 网络?

如何在 Android 中以编程方式更改应用程序图标?