私はアプリ A と B を作成しています。A が任意の MIME タイプのファイル URI を B に送信できるようにしたいと考えています。B が要求せずに A から B に URI をプッシュしたい場合に、ファイルの要求を行う人を処理する方法の説明を見つけました。アプリ間でデータを共有する方法のより一般的な説明も見ましたが、それは ACTION_SEND を使用し、その場合、ユーザーには選択できるアプリのリストが表示されます。特にアプリ B だけがファイル URI を受け取るようにしたいのです。さらに、誰かが別の目的で ACTION_SEND を実行しているときに、アプリ B が選択肢として表示されないようにします。では、ある特定のアプリから別の特定のアプリにファイル URI を送信するにはどうすればよいでしょうか?
編集 1: 例にいくつかのコード スニペットを追加します。
アプリ A では、次のことを行っています。
Intent testIntent = new Intent("com.example.appB.TEST");
testIntent.addCategory(Intent.CATEGORY_DEFAULT);
testIntent.setData(Uri.parse("file:///mnt/sdcard/test.txt"));
startActivityForResult(testIntent, TEST);
アプリ B では、マニフェストに次のものがあります。
<activity
android:name="com.example.appB.mainActivity"
android:label="@string/app_name"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.example.appB.TEST" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
</intent-filter>
</activity>
私が得るエラーはActivityNotFoundExceptionです。setData 行を取り除くと、アクティビティが開始されますが、明らかに URI がありません。
ここでヒットしたその他の問題について読むことができます。