<action Android:name="Android.intent.action.SEND" />
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:mimeType="text/plain" />
これは私のマニフェストファイルにあります
これにより、自分のアプリがすべてのアプリの共有リストに表示されますが、自分のアプリを別の特定のアプリの共有リストに表示し、他のアプリを所有していません
これを行うには、アプリケーションが作成しているインテントを把握し、アプリケーションを特定のリストに追加するIntentFilterを作成する必要があります。
Receiveing a Implicit Intent on Intents and Filters(Android Developers)
アプリケーションはおそらく、フックできる特定のアクション名を使用します。
<intent-filter . . . >
<action Android:name="com.example.project.SHOW_CURRENT" />
<action Android:name="com.example.project.SHOW_RECENT" />
<action Android:name="com.example.project.SHOW_PENDING" />
. . .
</intent-filter>
または、特定の種類のファイルを受け入れるアプリケーションを探している可能性もあります。
<intent-filter . . . >
<data Android:mimeType="video/mpeg" Android:scheme="http" . . . />
<data Android:mimeType="audio/mpeg" Android:scheme="http" . . . />
. . .
</intent-filter>
アプリケーションの名前とそれが共有しているものは、より具体的な応答を提供するのに役立ちます。
アプリの外部からコンテンツを共有するときに最初に開くアクティビティにこのコードを追加し、onCreate()でこのメソッドを呼び出します
private void onSharedIntent() {
Intent receiverdIntent = getIntent();
String receivedAction = receiverdIntent.getAction();
String receivedType = receiverdIntent.getType();
if (receivedAction.equals(Intent.ACTION_SEND)) {
// check mime type
if (receivedType.startsWith("text/")) {
String receivedText = receiverdIntent
.getStringExtra(Intent.EXTRA_TEXT);
if (receivedText != null) {
//do your stuff
}
}
else if (receivedType.startsWith("image/")) {
Uri receiveUri = (Uri) receiverdIntent
.getParcelableExtra(Intent.EXTRA_STREAM);
if (receiveUri != null) {
//do your stuff
fileUri = receiveUri;// save to your own Uri object
Log.e(TAG,receiveUri.toString());
}
}
} else if (receivedAction.equals(Intent.ACTION_MAIN)) {
Log.e(TAG, "onSharedIntent: nothing shared" );
}
}
これをマニフェストに追加し、
<activity
Android:name="your-package-name.YourActivity">
<intent-filter>
<action Android:name="Android.intent.action.SEND" />
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:mimeType="image/*" />
<data Android:mimeType="text/*" />
</intent-filter>
</activity>
これは、私がすべてのWebページを取得するのにうまく機能し、 my app がWebページのmp3ファイルをスキャンして、そこからアラームを設定するのに役立ちました。 Webページを共有すると、新しいURLアクティビティが開きます。
<activity
Android:name=".NewUrl"
Android:label="@string/title_activity_new_url"
Android:windowSoftInputMode="stateUnchanged">
<intent-filter>
<action Android:name="Android.intent.action.SEND"/>
<category Android:name="Android.intent.category.DEFAULT"/>
<data Android:mimeType="text/*"/>
</intent-filter>
</activity>
次に、アプリでリンクを受け取るために、このチュートリアルから素晴らしい情報を得ました: http://code.tutsplus.com/tutorials/Android-sdk-receiveing-data-from-the- send-intent--mobile-14878
-特定のアクティビティのプロジェクトAndroidManifest.xmlファイルに以下のコードを追加します。
<activity
Android:name=".MainActivity"
Android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action Android:name="Android.intent.action.SEND" />
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:mimeType="text/plain" />
</intent-filter>
</activity>
-次のコード行をプロジェクト固有のアクティビティに追加します。
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if ("Android.intent.action.SEND".equals(action) && type != null && "text/plain".equals(type)) {
Log.println(Log.ASSERT,"shareablTextExtra",intent.getStringExtra("Android.intent.extra.TEXT"));
}
これをmainefistファイルに追加します
<activity Android:name=".ShareActivity">
<intent-filter
Android:label="Share with my app">
<action Android:name="Android.intent.action.SEND" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
このアプリに使用したいAPIがあるかどうかを確認します。
もしそうなら、あなたは知ることによって利益を得ることができます
このようなものが見つかれば、他のアプリからは見られないでしょう。