我想从我的React Native应用程序中打开其他几个应用程序。
当我知道他们的意图网址时,链接(https://facebook.github.io/react-native/docs/linking.html)非常适用于facebook,Google地图,电话,Skype等应用程序,但我想要运行的是默认的电子书阅读器,youtube,IPLA和平板电脑上预装的一堆游戏,网址/包名称我不知道。
我的团队前成员在一年前使用cordova创建了其他应用程序并使用此工具:https://github.com/lampaa/com.lampa.startapp。
问题:
- 上面是否有像lampaa startapp这样的工具,但对于React Native,我可以用包名运行app,而不是url?
- 我该如何查看意向网址(例如' fb:'用于Facebook,' geo:'用于g.maps)和包名称(例如&com; com.google .android.apps.maps')安装的应用程序?
- 当我已经拥有他们的包名但不是网址时,如何运行已安装的游戏和电子书阅读器?
仅限Android,不关心iOS。
答案 0 :(得分:0)
我不知道是否可以获得其他已安装应用的deep-link scheme
(例如fb:
,geo:
)。
但您可以获得Launcher activity
其他已安装的应用。
PackageManager pm = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));
for (ResolveInfo rInfo : appList) {
Log.d("Launcher", "package:" + rInfo.activityInfo.packageName +
"; activity: " + rInfo.activityInfo.name);
}
或者您可以直接启动另一个应用:
PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(pacakgeNameOfTheApp);
startActivity(intent);