11

AndroidManifest に次の行を含むアプリケーションがあります。

<category android:name="android.intent.category.HOME" /> 
<category android:name="android.intent.category.DEFAULT" />                            
<category android:name="android.intent.category.MONKEY"/>

私の質問は、これらのオプションをプログラムで設定することは可能ですか? つまり、一部のユーザーは上記のオプションを有効または無効にできるようになります。

これが行うことは、アプリをランチャーとして保持することです。

で、これに条件をつけて、ユーザーに合わせて作ってもいいですか?

編集: この質問を編集して、Rawr の提案を追加しました。

主な活動を呼び出す前に私がやっていることは次のとおりです。

        Intent myIntent = new Intent(v.getContext(), MainActivity.class);

        myIntent.addCategory(Intent.CATEGORY_HOME);
        myIntent.addCategory(Intent.CATEGORY_DEFAULT);              
        myIntent.addCategory(Intent.CATEGORY_MONKEY);
        startActivity(myIntent);

これらのコマンドをマニフェスト内で使用すると、機能します。ホームボタンを押してアプリを終了することはできません。上記のようにカテゴリを手動で追加しても機能しません。

助言がありますか?

前もって感謝します!

4

2 に答える 2

6

を作成すると、そのインテントのカテゴリを特定するためにintent使用できます。android docsaddCategoryによると、このインテントを解決するときに、指定されたすべてのカテゴリを提供するアクティビティのみが使用されます。たとえば、あなたがした場合

Intent i = new Intent();
i.addCategory(Intent.CATEGORY_HOME);
i.addCategory(Intent.CATEGORY_DEFAULT);

ホーム カテゴリとデフォルト カテゴリを、必要な他のカスタム カテゴリとともにインテントに追加できます。そこからどうするかはあなた次第です。インテントの目的が何なのかわからないので、そのままにしておきます。

コメントで提供されている動作に関しては、これはインテント フィルターの必要性に関連していると思います。インテントのカテゴリを設定しても、そのカテゴリに応答するフィルタを含めない限り、あまり効果がありません。

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.HOME" />
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

マニフェストにインテント フィルタを設定すると、プログラムで設定したカテゴリが効果的にリッスンされます。そのため、インテントをキャッチするには、マニフェストに対応するカテゴリ タグが必要です。

于 2013-05-08T18:38:26.997 に答える
4

これを行う別の方法に出くわしました-基本的に、あなたが求めていることを正確に行うことはできませんがActivities、アプリの特定を無効/有効にすることができます.

したがって、Home アプリをデフォルトで無効にしておくことができ、ユーザーがそれを使用したい場合は、プログラムで有効にすることができます。

私の情報は、@ Commonsware による次の回答から得たもので、ここで複製しています。


<intent-filter>プログラムで を有効化、無効化、または作成することはできません。

ただし、あなたの場合、<intent-filter>コンポーネントごとに 1 つしかありません。その場合、 および を使用して、プログラムでコンポーネントを有効または無効にすることができます。あなたの場合、アクティビティを有効または無効にすると、その.PackageManagersetComponentEnabledSetting()<intent-filter>


  • 上記の回答は、もともと別のスレッドで @Commonsware が作成したものです
  • これは@mlcによる別の有用な回答です
于 2013-09-04T11:02:14.277 に答える