2017-01-06 13 views
0

私はReact Nativeアプリからいくつかの他のアプリケーションを開きたいと思います。
私は彼らの意図のURLを知っているとき、しかし、私が実行したいものは、デフォルトの電子ブックリーダー、YouTube、IPLAとタブレットにプリインストールされているゲームの束ですが、Facebookのようなアプリ、グーグルマップ、電話、スカイプにリンクする(https://facebook.github.io/react-native/docs/linking.html) which urls/package names私は知らないアンドロイドから別のアプリを開く方法ネイティブアプリに反応しますか?

私のチームは前年度、cordovaで他のアプリを作成し、彼はこのツールを使用しています:https://github.com/lampaa/com.lampa.startapp

質問
が - そこlampaaのstartappのようないくつかのツールは、上記のですが、ネイティブに反応するために、どこでパッケージ名を持つアプリケーションを実行できるかどうか、URLではありませんか?
- インストールしたアプリのインテントURL(facebookでは「fb:」、g.mapsでは「geo:」)やパッケージ名(「com.google.android.apps.maps」など)を確認するにはどうすればよいですか?
- すでにインストールされているゲームや電子ブックリーダーを実行するにはどうすればいいですか?

Androidのみ、iOSは関係ありません。

+0

何か解決策を見つけますか? – vinayr

+0

@vinayr私の知識によると、このツールを使ってネイティブコードワードブリッジを作成することです: -plugin)を使用し、cordovaプラグインを使用します。 Unfortunatellyこれは私のために働いていない、アプリはうまく構築するが、起動後すぐにクラッシュします。成功すれば幸いです。[link](https://github.com/axemclion/react-native-cordova-plugin/issues/36)。 –

答えて

0

他のインストール済みアプリのdeep-link schemefb:,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); 
+1

しかしこれはJavaScriptではなく、ネイティブのJavaコードのように見えますが、私はこれをどうするべきかわかりません:/アプリケーションをネイティブで反応させるにはjavaを知る必要がありますか? –

関連する問題