2016-04-15 16 views
2

私はシステム起動時に起動して魅力的に動作するアンドロイドアプリを作成しましたが、CCleanerやClean Masterなどのサードパーティ製アプリケーションでこのアプリケーションを自動的にブロックする場合は保護を追加します。 私が知りたいのは、私のアプリケーションは自動的にブロックされ、ユーザーが開いている設定ページを表示します。この設定を変更するつもりはありません。もちろん、これは第三者のアプリケーションではなくコードの観点から行うべきです。システム起動時にAndroidアプリがブロックされているかどうかを確認するにはどうすればよいですか?

誰かがこの情報をどこに見つけることができますか?

よろしく、次のコード DM

+0

私は 'PackageManager#setComponentEnabledSetting()'無効にするには、これらのアプリはちょうど使用することを推測します彼らはルートを必要とするので、アプリのブートレシーバー。少なくともClean Masterは、とにかくします。その場合、 'PackageManager#getComponentEnabledSetting()'を使ってアプリケーションの起動レシーバの有効状態をチェックすることができます。 –

+0

ありがとう!これはまさに私が探していたものです。 'getPackageManager()。getComponentEnabledSetting(componentName);' は、受信者(componentNameとして記述されている)が有効または無効の場合、infoで整数ステータスを返します。さらに、この状態をコードから変更することも可能です。 – yale

+0

ええ、アプリは常に独自のコンポーネントを有効または無効にできますが、別のパッケージのコンポーネントの状態を変更するにはルートアクセスが必要です。 –

答えて

0

は(残念ながらAndroidの< 6.0のためにのみ動作します)私の問題を解決し

ComponentName componentName = new ComponentName(this, MyBootCompletedReceiver.class); 
int state = getPackageManager().getComponentEnabledSetting(componentName); 

if (state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { 
// ALERT that Receiver is blocked -> works for Android < 6.0 
} 
関連する問題