目前,我正在尝试创建一堆简单的Android应用程序,以用它们替换默认应用程序。
我已经在this post中看到了如何将SMS应用设置为默认设置:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android-dir/mms-sms" />
</intent-filter>
但是我想知道如何为这些应用程序实现相同的目标:
我已经注意到,在没有用户交互的情况下,几乎不可能以编程方式将应用设置为默认应用。这将是主要目标,但是如果用户可以选择要用作默认应用程序的应用程序,也可以。但我想确保上面列出的应用程序是可选的。所以我的问题是,我必须在android清单文件中的意图过滤器中添加哪些mime类型?
答案 0 :(得分:5)
您需要为要使其应用程序成为默认应用程序的文件类型,操作或类别注册一个意图过滤器。然后,用户可以根据需要选择您的应用作为默认应用。
查看here,以获取有关Intent和Intent过滤器的更多信息。
只有通过root用户访问权限,才能将您的应用强制为默认应用。
答案 1 :(得分:2)
我不确定,但是使用Intent.createChooser()
您将获得解决方案
click here
答案 2 :(得分:2)
所以我的问题是,我必须在android清单文件中的意图过滤器中添加哪些mime类型?
mimetype
只是描述内容的标准,是下一步处理。这不是Android中的新功能,您可以查看有关媒体类型Wiki page的更多信息。 Android Documentation中有关mimetype
属性的信息:
android:mimeType-MIME媒体类型,例如image / jpeg或audio / mpeg4-generic。子类型可以是星号通配符,以指示任何子类型匹配
不过,您看到的MIME类型上的vnd
前缀是“供应商前缀”,这意味着它不是 IETF MIME正式类型。因此,您需要为每个应用程序检查此类型。以下是一些示例。
注意!为了设置默认应用程序,您需要首先指定android.intent.action
。因为它是流程交互之间的主要标志,所以启动器(例如)将没有mimetype
,只有意图动作 {strong> android.intent.action.MAIN
,android.intent.action.SET_WALLPAPER
。>
相机:
<data android:mimeType="vnd.android.cursor.dir/image" />
<data android:mimeType="vnd.android.cursor.dir/video" />
图像/视频/音频:
<data android:mimeType="video/*" />
<data android:mimeType="video/mpeg4" />
<data android:mimeType="video/mp4" />
<data android:mimeType="video/3gp" />
......
<data android:mimeType="image/*" />
<data android:mimeType="application/sdp" />
......
<data android:mimeType="audio/x-mpegurl" />
<data android:mimeType="audio/mpegurl" />
<data android:mimeType="application/vnd.apple.mpegurl" />
<data android:mimeType="application/x-mpegurl" />
....
联系人:
<data android:mimeType="vnd.android.cursor.item/phone" />
<data android:mimeType="vnd.android.cursor.item/person" />
<data android:mimeType="vnd.android.cursor.dir/calls" />
浏览器:
<data android:mimeType="application/xhtml+xml"/>
<data android:mimeType="application/vnd.wap.xhtml+xml"/>
<data android:mimeType="vnd.android.cursor.item/postal-address" />
<data android:mimeType="vnd.android.cursor.dir/bookmark"/>
<data android:mimeType="vnd.android.cursor.item/download"/>