Some thoughts about AppOpsManager and 4.4
Android 4.3 introduced a new hidden feature: AppOps.
Android 4.4 improved this feature, but it is still hidden.
Someone talks about it as an "App Permission Manager".
We have very few information about it, but it is a lot more than a simple permission manager.
Currently there is no action to launch it.
You can see it in Manifest.xml:
https://github.com/android/platform_packages_apps_settings/blob/master/AndroidManifest.xml#L802
A simple way could be this:

Here you can find info about apps which use location-permissions, contact-permissions, message-permissions....
In the list, for each app you can see the last use of this permission, and if you click on an item, you can see a full detail.
Pay attention!
You can disable permissions, but this can break your app!
Don't do it!!
Currently the devs can't check if a permission was removed.
With API 19 Google introduced new feature in 4.4. with this class: AppOpsManager.
Pay attention to comments inside it:
I don't know much about this class, however just to try......
You can get code from GitHub:
Android 4.4 improved this feature, but it is still hidden.
Someone talks about it as an "App Permission Manager".
We have very few information about it, but it is a lot more than a simple permission manager.
Currently there is no action to launch it.
You can see it in Manifest.xml:
https://github.com/android/platform_packages_apps_settings/blob/master/AndroidManifest.xml#L802
A simple way could be this:
Intent intent = new Intent("android.settings.SETTINGS");
intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,
"com.android.settings.applications.AppOpsSummary");
startActivity(intent);

Here you can find info about apps which use location-permissions, contact-permissions, message-permissions....
In the list, for each app you can see the last use of this permission, and if you click on an item, you can see a full detail.
Pay attention!
You can disable permissions, but this can break your app!
Don't do it!!
Currently the devs can't check if a permission was removed.
With API 19 Google introduced new feature in 4.4. with this class: AppOpsManager.
Pay attention to comments inside it:
This API is not generally intended for third party application developers; most features are only available to system applicatins.I suggest you not use this class!
I don't know much about this class, however just to try......
//Don't use this code!
AppOpsManager mAppOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
PackageManager mPm = getPackageManager();
PackageInfo mPackageInfo=null;
try {
mPackageInfo = mPm.getPackageInfo(packageName,
PackageManager.GET_DISABLED_COMPONENTS |
PackageManager.GET_UNINSTALLED_PACKAGES);
} catch (Exception e) {//only for test!}
int permission= mAppOps.noteOp(AppOpsManager.OPSTR_FINE_LOCATION,
mPackageInfo.applicationInfo.uid,
packageName);
You can get code from GitHub:
Thanks a ton for sharing your thoughts—they're very helpful. Don’t forget to read this profile too Clicks Per Second. CPS tests are a fun way to test how fast you can click.
ReplyDelete