web-dev-qa-db-ja.com

私のAndroidアプリを別の特定のアプリの共有リストに表示する方法

<action Android:name="Android.intent.action.SEND" />     
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:mimeType="text/plain" />

これは私のマニフェストファイルにあります

これにより、自分のアプリがすべてのアプリの共有リストに表示されますが、自分のアプリを別の特定のアプリの共有リストに表示し、他のアプリを所有していません

24
Android Ninja

これを行うには、アプリケーションが作成しているインテントを把握し、アプリケーションを特定のリストに追加する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>

アプリケーションの名前とそれが共有しているものは、より具体的な応答を提供するのに役立ちます。

10
DanO

アプリの外部からコンテンツを共有するときに最初に開くアクティビティにこのコードを追加し、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>
8
Soropromo

これは、私がすべてのWebページを取得するのにうまく機能し、 my app がWebページのmp3ファイルをスキャンして、そこからアラームを設定するのに役立ちました。 Webページを共有すると、新しいURLアクティビティが開きます。

このコードの結果は次のとおりです: enter image description here

  <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

7
med116

enter image description here-特定のアクティビティのプロジェクト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"));
            }
5
Bhavik Nathani

これを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>

このリンクが役立つ場合があります

4
AbuQauod

このアプリに使用したいAPIがあるかどうかを確認します。

もしそうなら、あなたは知ることによって利益を得ることができます

  • フィルターのより具体的な暗黙のアクション
  • またはおそらくDEFAULT以外のカテゴリを追加します
  • このようなものが見つかれば、他のアプリからは見られないでしょう。

    0
    WineGoddess