Java tutorial
//package com.java2s; //License from project: Open Source License import android.annotation.TargetApi; import android.app.AppOpsManager; import android.content.Context; import android.os.Binder; import android.os.Build; import android.util.Log; import java.lang.reflect.Method; public class Main { private static final String TAG = "liyujiang"; @TargetApi(Build.VERSION_CODES.KITKAT) public static boolean isAllowed(Context context, int op) { Log.d(TAG, "api level: " + Build.VERSION.SDK_INT); if (Build.VERSION.SDK_INT < 19) { return true; } Log.d(TAG, "op is " + op); String packageName = context.getApplicationContext().getPackageName(); AppOpsManager aom = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); Class<?>[] types = new Class[] { int.class, int.class, String.class }; Object[] args = new Object[] { op, Binder.getCallingUid(), packageName }; try { Method method = aom.getClass().getDeclaredMethod("checkOpNoThrow", types); Object mode = method.invoke(aom, args); Log.d(TAG, "invoke checkOpNoThrow: " + mode); if ((mode instanceof Integer) && ((Integer) mode == AppOpsManager.MODE_ALLOWED)) { Log.d(TAG, "allowed"); return true; } } catch (Exception e) { Log.e(TAG, "invoke error: " + e); e.printStackTrace(); } return false; } }