项目:QMUI_Android
文件:QMUIDeviceHelper.java
@TargetApi(19)
private static boolean checkOp(Context context,int op) {
final int version = Build.VERSION.SDK_INT;
if (version >= Build.VERSION_CODES.KITKAT) {
AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
try {
Method method = manager.getClass().getDeclaredMethod("checkOp",int.class,String.class);
int property = (Integer) method.invoke(manager,op,Binder.getCallingUid(),context.getPackageName());
return AppOpsManager.MODE_ALLOWED == property;
} catch (Exception e) {
e.printstacktrace();
}
}
return false;
}
项目:Accessibility
文件:PackageUsageHelper.java
public static boolean usagePermissionCheck(Context context) {
boolean granted = false;
if (context != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
try {
AppOpsManager appOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
int mode = appOps.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS,android.os.Process.myUid(),context.getPackageName());
if (mode == AppOpsManager.MODE_DEFAULT) {
String permissionUsage = "android.permission.PACKAGE_USAGE_STATS";
granted = (context.checkCallingOrSelfPermission(permissionUsage) == PackageManager.PERMISSION_GRANTED);
} else {
granted = (mode == AppOpsManager.MODE_ALLOWED);
}
} catch (Throwable e) {
}
}
return granted;
}
项目:stynico
文件:testThread.java
public static boolean checkAlertwindowsPermission(Context context) {
try {
Object object = context.getSystemService(Context.APP_OPS_SERVICE);
if (object == null) {
return false;
}
Class localClass = object.getClass();
Class[] arrayOfClass = new Class[3];
arrayOfClass[0] = Integer.TYPE;
arrayOfClass[1] = Integer.TYPE;
arrayOfClass[2] = String.class;
Method method = localClass.getmethod("checkOp",arrayOfClass);
if (method == null) {
return false;
}
Object[] arrayOfObject1 = new Object[3];
arrayOfObject1[0] = 24;
arrayOfObject1[1] = Binder.getCallingUid();
arrayOfObject1[2] = context.getPackageName();
int m = ((Integer) method.invoke(object,arrayOfObject1));
return m == AppOpsManager.MODE_ALLOWED;
} catch (Exception ex) {
}
return false;
}
项目:yyox
文件:MeizuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,int op) {
final int version = Build.VERSION.SDK_INT;
if (version >= 19) {
AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
try {
Class clazz = AppOpsManager.class;
Method method = clazz.getDeclaredMethod("checkOp",String.class);
return AppOpsManager.MODE_ALLOWED == (int)method.invoke(manager,context.getPackageName());
} catch (Exception e) {
Log.e(TAG,Log.getStackTraceString(e));
}
} else {
Log.e(TAG,"Below API 19 cannot invoke!");
}
return false;
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,String.class);
return AppOpsManager.MODE_ALLOWED == (int) method.invoke(manager,"Below API 19 cannot invoke!");
}
return false;
}
项目:yyox
文件:QikuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,Log.getStackTraceString(e));
}
} else {
Log.e("","Below API 19 cannot invoke!");
}
return false;
}
项目:yyox
文件:HuaweiUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
项目:qmui
文件:QMUIDeviceHelper.java
@TargetApi(19)
private static boolean checkOp(Context context,context.getPackageName());
return AppOpsManager.MODE_ALLOWED == property;
} catch (Exception e) {
e.printstacktrace();
}
} else {
}
return false;
}
/**
* Check if the calling context has a set of permissions.
*
* @param context The calling context
* @param permissions One or more permission.
* @return True if all permissions are already granted,false if at least one permission is not
* yet granted.
* @see android.Manifest.permission
*/
public static boolean hasPermissions(@NonNull Context context,@NonNull @Size(min = 1) String... permissions) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
final AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
final String packageName = context.getPackageName();
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(context,permission)
!= PackageManager.PERMISSION_GRANTED) {
return false;
}
String op = AppOpsManager.permissionToOp(permission);
if (!TextUtils.isEmpty(op) && appOpsManager != null
&& appOpsManager.noteProxyOp(op,packageName) != AppOpsManager.MODE_ALLOWED) {
return false;
}
}
return true;
}
项目:LemonYi
文件:MeizuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
项目:LemonYi
文件:QikuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
项目:LemonYi
文件:HuaweiUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
项目:GcmForMojo
文件:MessageUtil.java
/**
* 判断是否有用权限
*
* @param context 上下文参数
*/
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean HavaPermissionForTest(Context context)
{
try
{
PackageManager packageManager = context.getPackageManager();
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(context.getPackageName(),0);
AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
int mode = 0;
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS,applicationInfo.uid,applicationInfo.packageName);
}
return (mode == AppOpsManager.MODE_ALLOWED);
} catch (PackageManager.NameNotFoundException e)
{
return true;
}
}
项目:atmosphere-service
文件:LocationMockHandler.java
private boolean isMocklocationEnabled() {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
AppOpsManager opsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
return (opsManager.checkOp(AppOpsManager.OPSTR_MOCK_LOCATION,BuildConfig.APPLICATION_ID)
== AppOpsManager.MODE_ALLOWED);
} else {
String MocklocationSettingValue = Settings.Secure.getString(context.getContentResolver(),Settings.Secure.ALLOW_MOCK_LOCATION);
return (MocklocationSettingValue.equals(ENABLED_MOCK_LOCATION_VALUE));
}
} catch (SecurityException e) {
return false;
}
}
项目:AppOpsX
文件:AppPermissionActivity.java
@Override
public boolean onoptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.action_reset:
mPresenter.reset();
return true;
case R.id.action_hide_perm:
showHidePerms();
return true;
case R.id.action_open_all:
changeAll(AppOpsManager.MODE_ALLOWED);
ATracker.send(AEvent.C_APP_OPEN_ALL);
break;
case R.id.action_close_all:
changeAll(AppOpsManager.MODE_IGnorED);
ATracker.send(AEvent.C_APP_IGnor_ALL);
break;
case R.id.action_app_info:
startAppinfo();
break;
}
return super.onoptionsItemSelected(item);
}
项目:AppOpsX
文件:OpsxManager.java
public OpsResult disableAllPermission(final String packageName) throws Exception {
OpsResult opsForPackage = getopsForPackage(packageName);
if (opsForPackage != null) {
if (opsForPackage.getException() == null) {
List<PackageOps> list = opsForPackage.getList();
if (list != null && !list.isEmpty()) {
for (PackageOps packageOps : list) {
List<OpEntry> ops = packageOps.getops();
if (ops != null) {
for (OpEntry op : ops) {
if (op.getMode() != AppOpsManager.MODE_IGnorED) {
setopsMode(packageName,op.getop(),AppOpsManager.MODE_IGnorED);
}
}
}
}
}
} else {
throw new Exception(opsForPackage.getException());
}
}
return opsForPackage;
}
项目:AppOpsX
文件:Helper.java
static int permissionToCode(String permission) {
if (sRuntimePermToOp == null) {
sRuntimePermToOp = new HashMap<>();
Object sOpPerms = ReflectUtils.getFieldValue(AppOpsManager.class,"sOpPerms");
Object sOpToSwitch = ReflectUtils.getFieldValue(AppOpsManager.class,"sOpToSwitch");
if (sOpPerms instanceof String[] && sOpToSwitch instanceof int[]) {
String[] opPerms = (String[]) sOpPerms;
int[] opToSwitch = (int[]) sOpToSwitch;
if (opPerms.length == opToSwitch.length) {
for (int i = 0; i < opToSwitch.length; i++) {
if (opPerms[i] != null) {
sRuntimePermToOp.put(opPerms[i],opToSwitch[i]);
}
}
}
}
}
Integer code = sRuntimePermToOp.get(permission);
if (code != null) {
return code;
}
return -1;
}
项目:FloatUtil
文件:SmartFloatUtil.java
/**
* 判断是否开启浮窗权限
* @return
*/
public static int hasAuthorFloatWin(Context context){
if (DeviceInfoUtil.getSystemVersion() < 19){
return NOT_SUPPORT_AUTHOR;
}
try {
AppOpsManager appOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
Class c = appOps.getClass();
Class[] cArg = new Class[3];
cArg[0] = int.class;
cArg[1] = int.class;
cArg[2] = String.class;
Method lMethod = c.getDeclaredMethod("checkOp",cArg);
if (AppOpsManager.MODE_ALLOWED == (Integer) lMethod.invoke(appOps,24,context.getPackageName())){
return HAS_AUTHOR;
} else {
return NOT_AUTHOR;
}
} catch(Exception e) {
return NOT_SUPPORT_AUTHOR;
}
}
项目:weex-analyzer-android
文件:XiaomiOverlayViewPermissionHelper.java
public static boolean isPermissionGranted(@NonNull Context context) {
if(!"Xiaomi".equalsIgnoreCase(Build.MANUFACTURER)) {
return true;
}
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
try {
Method method = manager.getClass().getDeclaredMethod("checkOp",24/*AppOpsManager.OP_SYstem_ALERT_WINDOW*/,context.getApplicationContext().getPackageName());
return AppOpsManager.MODE_ALLOWED == property;
}catch (Throwable e) {
WXLogUtils.e(TAG,e.getMessage());
return true;
}
} else {
return true;
}
}
/**
* "Xiaomi" phone is different others,need add AppOpsManager
* @param context
* @param permission
* @return
*/
@TargetApi(23)
private static boolean checkSelfPermissionForXiaomi(Context context,String permission) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
try {
return checkSelfPermission(context,permission) == PackageManager.PERMISSION_GRANTED;
} catch (RuntimeException t) {
return false;
}
}
int auth = ActivityCompat.checkSelfPermission(context,permission);
AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
int checkOp = appOpsManager.checkOp(AppOpsManager.permissionToOp(permission),Process.myUid(),context.getPackageName());
if (auth == PackageManager.PERMISSION_GRANTED && checkOp == AppOpsManager.MODE_ALLOWED) {
return true;
}
if (auth == PackageManager.PERMISSION_GRANTED && checkOp == AppOpsManager.MODE_IGnorED) {
return false;
}
return false;
}
项目:android-base
文件:ToastCompat.java
public static boolean isNotificationEnabled(Context context) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
ApplicationInfo appInfo = context.getApplicationInfo();
String pkg = context.getApplicationContext().getPackageName();
int uid = appInfo.uid;
Class appOpsClass = null; /* Context.APP_OPS_MANAGER */
appOpsClass = Class.forName(AppOpsManager.class.getName());
Method checkOpNoThrowMethod = appOpsClass.getmethod(CHECK_OP_NO_THROW,Integer.TYPE,String.class);
Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
int value = (int) opPostNotificationValue.get(Integer.class);
return ((int) checkOpNoThrowMethod.invoke(mAppOps,value,uid,pkg) == AppOpsManager.MODE_ALLOWED);
}
} catch (Exception e) {
}
return true;
}
项目:settingscompat
文件:SettingsCompat.java
private static boolean setMode(Context context,int op,boolean allowed) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2 || Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return false;
}
AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
try {
Method method = AppOpsManager.class.getDeclaredMethod("setMode",String.class,int.class);
method.invoke(manager,context.getPackageName(),allowed ? AppOpsManager.MODE_ALLOWED : AppOpsManager
.MODE_IGnorED);
return true;
} catch (Exception e) {
Log.e(TAG,Log.getStackTraceString(e));
}
return false;
}
项目:APlayer
文件:MeizuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
项目:APlayer
文件:QikuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
项目:APlayer
文件:HuaweiUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
项目:AppOpsDemo
文件:AppOpsUtils.java
/**
* 是否禁用某项操作
*/
@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,String.class};
Object[] args = new Object[]{op,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;
}
项目:Blackbulb
文件:Utility.java
/**
* Check if application can draw over other apps
* @param context Context
* @return Boolean
*/
public static boolean canDrawOverlays(Context context) {
int sdkInt = Build.VERSION.SDK_INT;
if (sdkInt >= Build.VERSION_CODES.M) {
if (sdkInt == Build.VERSION_CODES.O) {
// Sometimes Settings.canDrawOverlays returns false after allowing permission.
// Google Issue Tracker: https://issuetracker.google.com/issues/66072795
AppOpsManager appOpsMgr = context.getSystemService(AppOpsManager.class);
if (appOpsMgr != null) {
int mode = appOpsMgr.checkOpNoThrow(
"android:system_alert_window",context.getPackageName()
);
return mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_IGnorED;
} else {
return false;
}
}
// Default
return android.provider.Settings.canDrawOverlays(context);
}
return true; // This fallback may returns a incorrect result.
}
项目:BaseProject
文件:Util.java
@SuppressLint("NewApi")
public static void enableWriteSmsOpt(Context mContext) {
if (Build.VERSION.SDK_INT >= 19) {
// Android 4.4
// 及以上才有以下功能,并且可直接设置程序有写短信权限,如果以下运行有异常,则表示可能系统为Android5.0
String PHONE_PACKAGE_NAME = mContext.getPackageName();
PackageManager packageManager = mContext.getPackageManager();
AppOpsManager appOps = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
try {
PackageInfo info = packageManager.getPackageInfo(PHONE_PACKAGE_NAME,0);
Field field = AppOpsManager.class.getDeclaredField("OP_WRITE_SMS");
int WRITE_SMS = field.getInt(appOps);// 写短信权限
Method method = AppOpsManager.class.getmethod("setMode",int.class);
method.invoke(appOps,WRITE_SMS,info.applicationInfo.uid,PHONE_PACKAGE_NAME,AppOpsManager.MODE_ALLOWED);
} catch (Exception ex) {
// 表明该系统可能为Android5.0,且需要将程序设置成默认的短信程序
}
}
}
@TargetApi(Build.VERSION_CODES.KITKAT)
public static boolean checkOp(Context context,int op) {
final int version = Build.VERSION.SDK_INT;
if (version >= 19) {
AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
try {
Method method = manager.getClass().getDeclaredMethod("checkOp",context.getPackageName());
if (AppOpsManager.MODE_ALLOWED == property) {
return true;
} else {
return false;
}
} catch (Exception e) {
e.printstacktrace();
}
} else {
Log.e(TAG,"Below API 19 cannot invoke!");
}
return false;
}
项目:android.java
文件:NotificationController.java
/**
* Проверка наличия установленного флага "Показывать уведомления" в настройках приложения<br/>
* Используется для версий ОС Android от 4.3 (android sdk api 19)
*
* @param context текущий контекст
* @return true - если флаг установлен
*/
public static boolean isNotificationEnabled(Context context) {
boolean result = false;
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
ApplicationInfo appInfo = context.getApplicationInfo();
String pkg = context.getApplicationContext().getPackageName();
int uid = appInfo.uid;
Class appOpsClass = null;
try {
appOpsClass = Class.forName(AppOpsManager.class.getName());
Method checkOpNoThrowMethod = appOpsClass.getmethod(CHECK_OP_NO_THROW,String.class);
Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
int value = (int) opPostNotificationValue.get(Integer.class);
result = (int) checkOpNoThrowMethod.invoke(mAppOps,pkg) == AppOpsManager.MODE_ALLOWED;
} catch (Exception ignored) {
}
}
return result;
}
public boolean isMocklocationSet() {
boolean isMocklocation = false;
try {
//if marshmallow
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
AppOpsManager opsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
isMocklocation = (opsManager.checkOp(AppOpsManager.OPSTR_MOCK_LOCATION,BuildConfig.APPLICATION_ID) == AppOpsManager.MODE_ALLOWED);
} else {
// in marshmallow this will always return true
isMocklocation = !android.provider.Settings.Secure.getString(context.getContentResolver(),"mock_location").equals("0");
}
} catch (Exception e) {
return isMocklocation;
}
Logger.d("Mocklocation is enable?:%s",isMocklocation);
return isMocklocation;
}
项目:GrabQQPWD
文件:MeizuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,String.class);
return AppOpsManager.MODE_ALLOWED == method.invoke(manager,context.getPackageName());
} catch (Exception e) {
Log.e("",e.getMessage());
}
} else {
Log.e("","Below API 19 cannot invoke!");
}
return false;
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context,"Below API 19 cannot invoke!");
}
return false;
}
项目:GrabQQPWD
文件:MainActivity.java
@TargetApi(Build.VERSION_CODES.M)
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if (requestCode == 1) {
if (Settings.canDrawOverlays(this)) {
if (checkUsagePermission()) {
Intent intent = new Intent(this,BackgroundDetectService.class);
startService(intent);
}
}
} else if (requestCode == 2) {
AppOpsManager appOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
int mode = 0;
mode = appOps.checkOpNoThrow("android:get_usage_stats",getPackageName());
boolean granted = mode == AppOpsManager.MODE_ALLOWED;
if (!granted) {
Toast.makeText(this,"请开启该权限",Toast.LENGTH_SHORT).show();
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。