我有一套应用程序,每个应用程序都定义了不同的url方案。我有一个帮助应用程序,可以使用各种配置启动我的各种应用程序。现在我正在尝试测试最近添加的网址方案功能。因此,鉴于本地设备上的已知应用程序(例如,我有包名称,我有List [ResolveInfo],我有PackageInfo等...)我是否可以提取它支持的url方案?
以Facebook为例,如果我有包名“com.facebook.katana”,我可以从Android操作系统获取,该应用程序支持url方案“fb://”吗?
作为旁注,是的,我可以在我已知的包名和url方案之间创建一个本地映射,但我想看看是否有可能采用编程方法。
使用定义的网址方案添加我的某个应用活动的定义:
<activity
android:name="com.mycompany.activity.HandleURIActivity"
android:exported="true">
<!-- URL Scheme -->
<intent-filter>
<data android:scheme="@string/app_url_scheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
的strings.xml
<string name="app_url_scheme">ac-dc</string>
答案 0 :(得分:0)
我认为这应该可以解决问题(未经测试):
PackageManager pm = context.getPackageManager();
Intent i = new Intent();
i.setPackage(MY_PACKAGE);
List<ResolveInfo> list = pm.queryIntentActivities(i, PackageManager.MATCH_ALL);
for (ResolveInfo info : list) {
Iterator<String> it = info.filter.schemesIterator();
// iterate it to get the list of schemes.
}