1

これらのインテント フィルターとこのハンドラーを使用して共有インテントを受け取るようにアプリを設定しました。共有メニューに表示されません。

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http"/>
</intent-filter>
<intent-filter>
   <action android:name="android.intent.action.SEND" />
   <category android:name="android.intent.category.DEFAULT" />
   <data android:scheme="https"/>
</intent-filter>


Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type.equals("text/plain")) {
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle(R.string.pick_profile);
    builder.setItems(getConnProfNames(connectionProfiles), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            selectedItem = connectionProfiles.get(which);
            DownloadTask.execute();
        }
    });
}
4

1 に答える 1

0

共有インテントのようなものはありません。アプリは、さまざまなアクション、タイプ、エクストラ、データを含むインテントを使用してデータを共有できます。ほとんどのアプリは ACTION_SEND を使用しますが、アプリによって他のパラメーターは大きく異なります。インテントフィルターを使用すると、http および https スキームを使用してインテントのみをキャッチし、コードはタイプを text/plain にさらに制限します。上記のコードが機能するかどうかは、トリガーされたときに「共有メニュー」が何をするかによって異なります。

Dolphinブラウザがデータを共有するために使用する意図は、公式に文書化されていないAFAIKです. 次のフィルターを使用して、そのインテントの 1 つを「キャッチ」することができました。

<intent-filter>
   <action android:name="android.intent.action.SEND" />
   <data android:mimeType="*/*" />
   <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

次のように、エクストラから URL を取得することもできました。

    CharSequence text = intent.getCharSequenceExtra(Intent.EXTRA_TEXT);

それは、必要なフィルターを達成しようとしているものに大きく依存します。URL を取得して HTML ページを読み込もうとしている場合は、私が使用したフィルターで十分です。URL を取得することができ、WebView などでページを表示できます。

于 2013-06-22T04:20:02.290 に答える