2011-06-20 11 views
9

いくつかのランタイム情報に応じて、ランチャーで自分のアプリのアイコンを非表示または表示する必要があります。明示的な意図でアクティビティを実行できるようにしたいので、アクティビティを無効にすることは良い選択ではありません(私はそれがうまくいくかどうかわかりませんが、まだ試していませんが私はそれがなると思う)。では、インテントフィルタを無効にすることはできますか?Android:アクティビティのインテントフィルタをプログラムで有効/無効にすることはできますか?

+0

回答はこちらhttp://stackoverflow.com/questions/40505357/disable-the-intent-filter-from-android-manifest-programatically/40505924#40505924 – Takermania

答えて

25

あなたは、直接これを行うことはできませんが、問題のインテントフィルタを使用してAndroidManifest.xmlactivity aliasを作成することができ、その後、PackageManager#setComponentEnabledSetting()を使用してエイリアスを有効化または無効化、活動のメインコピーであなたの他のインテントフィルタを残します彼らは影響を受けません。

+2

[この投稿](http: /stackoverflow.com/questions/23919329/android-how-to-create-componentname-in-code-using-activity-alias)あなたのアクティビティエイリアスのコンポーネント名は 'new ComponentName($ packageName、$ packageName +") "+ $ aliasName)' $ packageNameはあなたのアプリケーションのパッケージです( 'getActvitiy()。getPackageName()')。 –

+2

現代版のandroid gradle Pluginを使用している場合は、 'BuildConfig.APPLICATION_ID'(または若干古いバージョンのプラグインでは' BuildConfig.PACKAGE_NAME')からパッケージ名を取得することもできます。これにより、常に同じ文字列になるものを取得するために実行時呼び出しを行うことが回避されます。 – mlc

+0

複数のインテントを削除できますか? 私のアクティビティが異なるタイプのNFCタグに対して複数の意図を持っていて、ある時点で私のアプリがNFCタグを検出したくない場合は、複数の意図を問題なく削除できますか? – Query

関連する問題