2

Android 用のポリシー マネージャーを開発しています。特定のルール セットとデバイスの現在の状態に応じて、ユーザーによる特定のアプリケーションの起動を制限 (許可/禁止) することになっています。

バックグラウンドで実行されているサービスであるべきだと考えています。アプリケーションを起動しようとするすべての試みを傍受し、問題がないかどうかを確認し、実行が許可されている場合は起動します。また、デバイスの状態がこれを行う必要があることを示している場合、特定のアプリケーションを自動的に開始および停止することもあります。

これをプログラムで行う方法はありますか?特定の時間に起動できるアプリケーションとできないアプリケーションを制御するには? また、すでに実行中のアプリケーションを停止するには?

結論として、アプリケーションを起動しようとする試みをプログラムで「傍受」し、おそらくこれらを拒否する方法はありますか?

4

2 に答える 2

0

AppLocker という次のオープンソース プロジェクトを見つけました。

http://code.google.com/p/applocker/source/checkout

他の許可されていないアクティビティがフォアグラウンドに来ようとしているかどうかを 100 ミリ秒ごとにチェックすることで機能します。その場合、AppLocker は、他のアプリのアクティビティが OnCreate() メソッドに到達する前に、独自のブロックするパスワード要求アクティビティをすばやく開始します (もちろん、フォアグラウンド アクティビティの状態がチェックされる頻度によって異なります)。

ただし、READ_LOGS パーミッションが削除されているため、このアプリは Android 4.1 以上では動作しないようです。:-(

ただし、ルート化されたデバイスのようで、とにかく権限が取得される可能性があります。この投稿を参照してください: Jelly Bean に対する READ_LOGS 権限 (api 16)

于 2014-02-14T16:45:49.303 に答える
0

アプリが有効化/表示されないようにする解決策を見つけました。

アプリケーション apk を /data/app から /sdcard/ にコピーし、アプリをアンインストールしてから、apk を /sdcard/ から system/app/ にコピーするだけで、最後にデバイスを再起動します。これにより、アプリのシステム権限が付与されます。

次のコードを使用して、アプリを有効/無効にできます (設定メニューからでも完全に非表示にできます)。

PackageManager pm=this.getPackageManager(); pm.setApplicationEnabledSetting("com.gueei.applocker",PackageManager.COMPONENT_ENABLED_STATE_DISABLED,0);

唯一のことは、表示/非表示にするアプリのパッケージ名を知っている必要があることです。apk を /system/app/ にコピーしないと、許可拒否エラーが発生します。

于 2014-02-17T15:48:17.763 に答える