如何从我的Android React Native应用程序打开另一个应用程序?

时间:2017-01-06 11:35:19

标签: android react-native react-native-android

我想从我的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。

1 个答案:

答案 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);