アプリケーションのパーミッションの管理ができるかもしれません。
ポイント
AppOpsのポイントです。- AppOpsManager、AppOpsServiceが追加された
- アプリケーションで使うには、getSystemService(Context.LAYOUT_INFLATER_SERVICE)をコール
- アプリケーションのパーミッションの抑制ができる
- framewokrs内の各サービスは、AppOpsServiceから設定値を取得して動作ON/OFFを決定
簡易クラス図
AppOpsServiceが生成されるタイミング
ActivityManagerServiceのコンストラクタで、AppOpsServiceが生成されます。
private ActivityManagerService() {
File systemDir = new File(dataDir, "system");
:
mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"));
:
}
AppOpsManagerの設定データ
AppOpsの設定値は次のように保存されています。格納ディレクトリは上記のとおり、Systemディレクトリでファイル名はappops.xmlです。
設定値のR/Wは次のように、AppOpsServiceで処理されています。詳しく知りたい方はソースを確認しましょう。
public class AppOpsService extends IAppOpsService.Stub {
public AppOpsService(File storagePath) {
mFile = new AtomicFile(storagePath);
mHandler = new Handler();
readState();
}
void readState() {
}
void writeState() {
}
}
ソース
android-4.3_r2.1のソースを確認すると、次のソースがAppOpsに該当します。以下のソースは要チェックです。
Settingsアプリ
packages/apps/Settings/src/com/android/settings/applications- AppOpsCategory.java
- AppOpsDetails.java
- AppOpsState.java
- AppOpsSummary.java
Frameworks
frameworks/base/core/java/android/app/ContextImpl.javaframeworks/base/core/java/android/app/AppOpsManager.java
frameworks/base/services/java/com/android/server/AppOpsService.java
frameworks/base/services/java/com/android/server/am/ActivityManagerService.java


0 件のコメント:
コメントを投稿