0

同じパッケージ名で、パッケージIDが異なる2つのアプリケーション(gradle設定で設定)があります。インテントのアクションを使用してアクティビティを開始し、アプリ内で制限する

アクティビティは、両方のAppsで同じである両方のアプリでインテントのアクション文字列を設定することによって開始されます。

これは、Appsが両方とも同じデバイスにインストールされている場合、アクティビティを開始すると私にはComplete action using..というダイアログが表示され、アクションを完了するためにアクティビティを選択するように指示されます。

私の質問は、コードリストでstartActivity()を使用する前に、マニフェストファイル(複数のモジュールのためにたくさんあります)とアクション文字列の設定を変更せずに、それらをどのように分けることができるかということです。アクションは現在のアプリケーションのみに制限されていますか?

更新番号1:代わりにアプリケーションIDを使用するとintent.setPackage()に近いものはありますか?私は欠場-理解していない場合は、あなたの質問に、あなたはコードの下を経由して、それをアーカイブすることができます

答えて

1

// start exactly component 
Intent intent = new Intent(); 
intent.setComponent(new ComponentName("yourPackageId", "yourPackageName.MainActivity")); 
startActivity(intent); 

//or you want to start launcher intent 
Intent intent = getActivity().getPackageManager().getLaunchIntentForPackage("yourPackageId"); 

あなたのMainActivityは、ここで説明するandroid:exportedとしてandroid:exported = trueを持っていることを確認してくださいshoud:

かどうか他のアプリケーションのコンポーネントによってアクティビティを起動することができます。できる場合は「true」、そうでない場合は「false」を指定します。 「false」の場合、同じアプリケーションのコンポーネントまたは同じユーザーIDを持つアプリケーションによってのみアクティビティーを起動できます。それは、アクションとインテントフィルタだ設定のAndroidマニフェストで宣言されているすべての活動のために
android:exported = "false"

0

は、ここでの現在の状態でそれに取り組むための最短の方法です。
Check here for reference

私はGCMのブロードキャスト受信機やその他のバックグラウンドサービスの場合にも同様のことを見落としました。

これは、より緊密な統合のためにAppsで実行する必要があります。

関連する問題