5

ファイルエクスプローラーを作成して登録しました

<action android:name="android.intent.action.GET_CONTENT" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.OPENABLE" />

ただし、別のアプリが「オープン可能」カテゴリの暗黙的なインテントを送信するタイミングをユーザーが選択できるように、内部ファイルエクスプローラーが表示され始めたくありません。どうすればいいですか?自分のアクション名を作成するだけでいいですか?

ユーザーにアプリ内で他のファイルエクスプローラーを選択してもらいたいので、明示的なものはありません。

4

5 に答える 5

2

あなたが私に尋ねるなら-あなたの状況にとって最良のことはあなた自身のインテントフィルターを作成することだと思います(あなたがあなたの質問で推測したように)、なぜならあなたがあなたの活動を放送に組み込まれたシステムを受信するために宣言するなら-それは意味があります。では、システムの観点から「彼の契約を破る」ようなもので、場合によってはそれを無視したい場合、この組み込みのブロードキャストを使用する意味は何ですか?

私が提案したことにもかかわらず、とにかくこの組み込みフィルターを使用することにした場合、あなたが望むものを達成する方法は次のとおりです。

マニフェストではなく、最初の起動アクティビティのonCreate()メソッドにレシーバーを登録し、onDestroy()でレシーバーの登録を解除します。

そうすれば、どのアクティビティもフォアグラウンドにない場合、アクティビティは登録されません。つまり、ユーザーの観点から、どのアプリケーションが近いかという状態に近くなります。

それがどのように行われるかわからない場合は、それが方法です:

private BroadcastReceiver mMyCustomReceiver = new  BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    registerReceiver(mMyCustomReceiver, IntentFilter.create(YOUR_FILTER_ACTION_COMMAND, YOUR_FILTER_DATA_TYPE));
}

@Override
protected void onDestroy() {
    unregisterReceiver(mMyCustomReceiver);
    super.onDestroy();
}
于 2012-06-25T04:12:12.543 に答える
2

自分のアプリだけがコンポーネントの1つを起動できることが重要な場合は、マニフェストでそのコンポーネントのエクスポートされた属性を「false」に設定します。

于 2014-03-10T08:02:11.693 に答える
1

ChrisStrattonTalKanelに同意します。ただし、代わりに、インテントフィルターで特定の「データ」を使用できます。ドキュメントによると:

URIもデータ型も含まないIntentオブジェクトは、フィルターが同様にURIまたはデータ型を指定しない場合にのみテストに合格します。

したがって、インテントに「開くことができる」カテゴリがあり、インテントフィルタ固有のデータ部分に一致するデータ部分がない場合、内部ファイルエクスプローラはユーザーに表示されません。

于 2012-06-25T04:32:53.993 に答える
1

'activity-alias'を使用して、android:exported = "false"とプライベートインテントを使用してアクティビティの「コピー」を作成できますか?

于 2015-10-21T17:17:32.883 に答える
0

明示的なインテントを介してアクティビティを呼び出す場合(つまり、ターゲットコンポーネント名を指定する場合)、そのアクティビティのインテントフィルターを省略できます。

于 2012-06-25T04:23:08.477 に答える