精华内容
下载资源
问答
  • 安装我们的app时提示这个权限,给用户感觉不好,可以不显示出来吗?或者说是这个权限是什么?有知道的吗? 谢谢
  • * 系统权限管理中心服务 */  public static final String APP_OPS_SERVICE = "appops"; /** * 系统悬浮窗权限 */ public static final int OP_SYSTEM_ALERT_WINDOW = 24; public static ...
    import java.lang.reflect.InvocationTargetException;
    
    import java.lang.reflect.Method;


    import android.content.Context;
    import android.os.Binder;
    import android.os.Build;


    public class PermissionCheckUntil {


    /**
    * 系统权限管理中心服务
    */
        public static final String APP_OPS_SERVICE = "appops";
    /**
    * 系统悬浮窗权限
    */
    public static final int OP_SYSTEM_ALERT_WINDOW = 24;


    public static int checkSystemAlterWindow(Context context) {
    return checkOp(context, OP_SYSTEM_ALERT_WINDOW);
    }

    public static int checkNofication(Context context){
    return checkOp(context, 25);
    }


    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static int checkOp(Context context, int op) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 19) {
    Object object = context.getSystemService(APP_OPS_SERVICE);
    Class c = object.getClass();
    try {
    Class[] cArg = new Class[3];
    cArg[0] = int.class;
    cArg[1] = int.class;
    cArg[2] = String.class;
    Method lMethod = c.getDeclaredMethod("checkOp", cArg);
    return (Integer) lMethod.invoke(object, op,
    Binder.getCallingUid(), context.getPackageName());
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    return -1;
    }
    }
    展开全文
  • android 项目中怎么用代码判断手机的某项应用权限是否允许或者禁止,比如拍照权限,定位权限,,,这些权限在manifest 配置文件中多已经配置过了,
  • MIUI应用权限设置

    千次阅读 2015-07-25 17:11:23
    随着miui越来越封闭,小米对非自由渠道的应用限制越来越苛刻,我们公司的...因此花了几个小时在网上搜索相关资料,我们不能帮助用户打开应用的权限至少我们能够引导用户去打开应用权限,并且将引导尽可能做的很简单。

           无论你觉得我写的好坏都可以在下面评论告诉我,你的支持是我继续写下去的动力,谢谢!

    随着miui越来越封闭,小米对非自由渠道的应用限制越来越苛刻,我们公司的产品一半以上的用户都是来自小米,而且像我们这样的靠短信支付维持收入的游戏,短信权限默认禁止真是要了我们的命。被加入miui黑名单的游戏默认重要的权限都是禁止状态,譬如发送短信权限默认设置为禁止就直接断了我们收入来源。因此花了几个小时在网上搜索相关资料,我们不能帮助用户打开应用的权限至少我们能够引导用户去打开应用权限,并且将引导尽可能做的很简单。


    资料一:跳转miui应用权限设置页面(之兼容V5/V6老版本只跳转上一级界面即可)http://www.tuicool.com/articles/jUby6rA

    资料二:判断当前设备是否是小米 http://dev.xiaomi.com/doc/p=254/index.html

    资料三:完整demo下载地址 http://download.csdn.net/detail/tgbus18990140382/8932881


    其他废话也不多说了,直接上代码

    先是通过context跳转到对应应用的权限设置页面:

    /**
     * 跳转到应用权限设置页面 http://www.tuicool.com/articles/jUby6rA 
     * @param context 传入app 或者 activity context,通过context获取应用packegename,之后通过packegename跳转制定应用
     * @return 是否是miui
     */
    public static boolean gotoPermissionSettings(Context context) {
    	boolean mark = isMIUI();
    	
    	if ( mark ) {
    		
    		// 之兼容miui v5/v6  的应用权限设置页面,否则的话跳转应用设置页面(权限设置上一级页面)
    		try {
    			Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
    			localIntent.setClassName("com.miui.securitycenter","com.miui.permcenter.permissions.AppPermissionsEditorActivity");
    			localIntent.putExtra("extra_pkgname", context.getPackageName());
    			context.startActivity(localIntent);
    		} catch (ActivityNotFoundException e) {
    			Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    			Uri uri = Uri.fromParts("package", context.getPackageName(),null);
    			intent.setData(uri);
    			context.startActivity(intent);
    		}
    	}		
    	
    	return mark;
    }


    再就是判断是否是小米的设备,官方为我们提供了一种简单方便的办法:
    /**
     * 检查手机是否是miui
     * @ref http://dev.xiaomi.com/doc/p=254/index.html
     * @return
     */
    public static boolean isMIUI(){
    	String device = Build.MANUFACTURER;
    	System.out.println( "Build.MANUFACTURER = " + device );
    	if ( device.equals( "Xiaomi" ) ) {
    		System.out.println( "this is a xiaomi device" );
    		return true;
    	}
    	else{
    		return false;
    	}		
    }

    我们同样也可以使用类似查找activtiy的方式判断是否是miui,但是这种方式同样存在兼容的问题,不是很推荐,也附上代码供大家参考:

    /**
     * 判断是否是miui V5/V6,老的miui无法兼容
     * @param context
     * @return
     */
    public static boolean isMIUIv5v6(Context context) {
    	boolean result = false;
    	Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
    	localIntent.setClassName("com.miui.securitycenter","com.miui.permcenter.permissions.AppPermissionsEditorActivity");
    	if (isIntentAvailable(context, localIntent)) {
    		result = true;
    	}
    	return result;
    }
    
    /**
     * 检查是否有这个activity
     * @param context
     * @param intent
     * @return
     */
    private static boolean isIntentAvailable(Context context, Intent intent) {
    	PackageManager packageManager = context.getPackageManager();
    	List<ResolveInfo> list = packageManager.queryIntentActivities(
    			intent, PackageManager.GET_ACTIVITIES);
    	return list.size() > 0;
    }

    以下是完整的代码,可以直接使用的类:

    public class SetMiuiPermission {
    
    	/**
    	 * 跳转到应用权限设置页面 http://www.tuicool.com/articles/jUby6rA 
    	 * @param context 传入app 或者 activity context,通过context获取应用packegename,之后通过packegename跳转制定应用
    	 * @return 是否是miui
    	 */
    	public static boolean gotoPermissionSettings(Context context) {
    		boolean mark = isMIUI();
    		
    		if ( mark ) {
    			
    			// 之兼容miui v5/v6  的应用权限设置页面,否则的话跳转应用设置页面(权限设置上一级页面)
    			try {
    				Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
    				localIntent.setClassName("com.miui.securitycenter","com.miui.permcenter.permissions.AppPermissionsEditorActivity");
    				localIntent.putExtra("extra_pkgname", context.getPackageName());
    				context.startActivity(localIntent);
    			} catch (ActivityNotFoundException e) {
    				Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    				Uri uri = Uri.fromParts("package", context.getPackageName(),null);
    				intent.setData(uri);
    				context.startActivity(intent);
    			}
    		}		
    		
    		return mark;
    	}
    	
    	/**
    	 * 检查手机是否是miui
    	 * @ref http://dev.xiaomi.com/doc/p=254/index.html
    	 * @return
    	 */
    	public static boolean isMIUI(){
    		String device = Build.MANUFACTURER;
    		System.out.println( "Build.MANUFACTURER = " + device );
    		if ( device.equals( "Xiaomi" ) ) {
    			System.out.println( "this is a xiaomi device" );
    			return true;
    		}
    		else{
    			return false;
    		}		
    	}
    
    	/**
    	 * 判断是否是miui V5/V6,老的miui无法兼容
    	 * @param context
    	 * @return
    	 */
    	public static boolean isMIUIv5v6(Context context) {
    		boolean result = false;
    		Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
    		localIntent.setClassName("com.miui.securitycenter","com.miui.permcenter.permissions.AppPermissionsEditorActivity");
    		if (isIntentAvailable(context, localIntent)) {
    			result = true;
    		}
    		return result;
    	}
    
    	/**
    	 * 检查是否有这个activity
    	 * @param context
    	 * @param intent
    	 * @return
    	 */
    	private static boolean isIntentAvailable(Context context, Intent intent) {
    		PackageManager packageManager = context.getPackageManager();
    		List<ResolveInfo> list = packageManager.queryIntentActivities(
    				intent, PackageManager.GET_ACTIVITIES);
    		return list.size() > 0;
    	}
    }
    以上函数的入口为:gotoPermissionSettings,传入当前application的context即可条状到当前应用的权限设置页面。


    展开全文
  • 部分手机读取应用列表权限

    万次阅读 2018-08-08 15:20:39
    某型号小米手机关闭读取应用列表权限后仍然可以手机安装的第三方应用,华为手机关闭读取应用列表权限后不能读取第三方应用列表,只可以读取系统应用。由于没有对应的权限,查看源码也没有对应的方法可以确定开关的...

    部分手机比如小米,华为在权限管理那里有个读取应用列表的权限,这个读取应用列表的权限不需要申请,部分手机系统默认就有的,并且默认打开。某型号小米手机关闭读取应用列表权限后仍然可以手机安装的第三方应用,华为手机关闭读取应用列表权限后不能读取第三方应用列表,只可以读取系统应用。由于没有对应的权限,查看源码也没有对应的方法可以确定开关的状态(貌似原生应用是没有这个权限的,应该是不同的手机厂商定制的,所以需要根据不同牌子的手机来处理)。查不同ROM手机系统源码来获取开关状态肯定是行不通的,所以只能曲线救国了,先获取第三方应用,能获取就不管了,不能获取就提示用户去权限管理里面打开读取应用列表权限。代码如下:(只适配了华为手机)

    if(android.os.Build.BRAND.equalsIgnoreCase("huawei") || android.os.Build.BRAND.equalsIgnoreCase("honor")){
        getAll();
    }else{
        initBqsDFSDK(MainFQActivity.this);
        BqsDF.commitLocation(GlobalConfig.getLocation()[1],GlobalConfig.getLocation()[0]);
    }
    private void getAll(){
        ArrayList<String> appNames = new ArrayList<>();
        PackageManager pm = getPackageManager();
        try {
            List<PackageInfo> packageInfoList = pm.getInstalledPackages(0);
            for(int i=0;i<packageInfoList.size();i++){
                PackageInfo packageInfo = packageInfoList.get(i);
                String appName = packageInfo.applicationInfo.loadLabel(pm).toString();
                if(TextUtils.isEmpty(appName)){
                    appName = packageInfo.packageName;
                }
                if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM )<= 0){
                    if(!packageInfo.packageName.equals(getPackageName())) {
                        appNames.add(appName);
                        break;
                    }
                }
            }
            if(appNames.size() <= 0){
                AlertDialog.Builder builder = new AlertDialog.Builder(this)
                        .setMessage("该应用需要读取已安装应用列表权限,请前往开启该应用的读取已安装应用列表的权限")
                        .setPositiveButton("去设置", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                try {
                                    Intent intent = new Intent();
                                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                    ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.permissionmanager.ui.MainActivity");//华为权限管理
                                    intent.setComponent(comp);
                                    startActivity(intent);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                    Intent localIntent = new Intent();
                                    localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                    localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                                    localIntent.setData(Uri.fromParts("package", getPackageName(), null));
                                    startActivity(localIntent);
                                }
                                dialog.dismiss();
                            }
                        });
                builder.create().show();
            }else{
                initBqsDFSDK(MainFQActivity.this);
                BqsDF.commitLocation(GlobalConfig.getLocation()[1],GlobalConfig.getLocation()[0]);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

     

    展开全文
  • vivo手机权限禁止–跳转至对应app的权限设置页面 开始我用的这个方法在vivo 酷派,oopo上:(在vivo上已不能使用) private void doStartApplicationWithPackageName(String packagename) { // 通过包名获取此APP...

    vivo手机权限禁止–跳转至对应app的权限设置页面

    	开始我用的这个方法在vivo 酷派,oopo上:(在vivo上已不能使用)
    

    private void doStartApplicationWithPackageName(String packagename) {
    // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
    PackageInfo packageinfo = null;
    try {
    packageinfo = mContext.getPackageManager().getPackageInfo(packagename, 0);
    } catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
    }
    if (packageinfo == null) {
    return;
    }
    // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
    Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    resolveIntent.setPackage(packageinfo.packageName);
    // 通过getPackageManager()的queryIntentActivities方法遍历
    List resolveinfoList = mContext.getPackageManager()
    .queryIntentActivities(resolveIntent, 0);
    Log.e(“PermissionPageManager”, “resolveinfoList” + resolveinfoList.size());
    for (int i = 0; i < resolveinfoList.size(); i++) {
    Log.e(“PermissionPageManager”, resolveinfoList.get(i).activityInfo.packageName + resolveinfoList.get(i).activityInfo.name);
    }
    ResolveInfo resolveinfo = resolveinfoList.iterator().next();
    if (resolveinfo != null) {
    // packageName参数2 = 参数 packname
    String packageName = resolveinfo.activityInfo.packageName;
    // 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packageName参数2.mainActivityname]
    String className = resolveinfo.activityInfo.name;
    // LAUNCHER Intent
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    // 设置ComponentName参数1:packageName参数2:MainActivity路径
    ComponentName cn = new ComponentName(packageName, className);
    intent.setComponent(cn);
    try {
    if (mContext.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {
    mContext.startActivity(intent);
    }
    } catch (Exception e) {
    goIntentSetting();
    e.printStackTrace();
    }
    }
    }

    下面这个方法完全满足需求
     /**
         * 
         * @param context  跳转至权限页面
         *       
         */
    	private static void goVivoManager(Context context) {
        Intent localIntent;
        if (((Build.MODEL.contains("Y85")) && (!Build.MODEL.contains("Y85A"))) || (Build.MODEL.contains("vivo Y53L"))) {
            localIntent = new Intent();
            localIntent.setClassName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.PurviewTabActivity");
            localIntent.putExtra("packagename", context.getPackageName());
            localIntent.putExtra("tabId", "1");
            context.startActivity(localIntent);
        } else {
            localIntent = new Intent();
            localIntent.setClassName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.SoftPermissionDetailActivity");
            localIntent.setAction("secure.intent.action.softPermissionDetail");
            localIntent.putExtra("packagename", context.getPackageName());
            context.startActivity(localIntent);
        }
    }
    
    展开全文
  •  在Android开发中,往往会用到许多诸如摄像头、录音等权限。但是,我们都知道,小米、魅族等定制系统,或者360等安全软件在程序请求打开相机、录音等操作时,会先弹出对话框提示用户是否允许程序执行这些操作,如果...
  • 自己应用怎么可以限制其他应用联网?(自己apk已拿到root权限
  • 今天给app添加权限,当用户禁止后会弹出alert提示用户,咱们这个app需要这个权限 没这个权限app的一些功能就不能使了,但用户已经关了 也不知道在哪打开 所以加个去设置的按钮 点击然后跳到系统应用管理 设置权限 ...
  • Android权限说明 Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制。 一、linux文件系统上的权限 -rwxr-x--x system system 4156 2012-06-30 16:12 test.apk. “-rwxr...
  • Android读取应用列表权限漏洞

    千次阅读 2019-08-06 20:46:35
    实测发现,这个权限形同虚设,利用该漏洞可以绕过读取应用列表权限获取所有应用,目前发现共有三种方法能读取到全部或部分应用列表,该bug截止目前未修补。 方法一:getPackageManager().queryIntent* 这种方法可以...
  • iOS Swift 判断应用定位权限

    千次阅读 2016-01-26 17:31:20
    1 .NotDetermined 表示用户还未对该应用的定位权限做出选择,但是一般如果用到定位,一进入app的时候就会自动弹出提示框要用户选择启用或者禁止,这个状态应该说进入程序后就不存在了 2 .Restricted 表示GPS
  • HarmonyOS之深入解析应用权限

    千次阅读 2021-07-26 13:55:41
    一、权限概述 ① 基本概念 应用沙盒: 系统利用内核保护机制来识别和隔离应用...应用权限: 由于系统通过沙盒机制管理各个应用,在默认规则下,应用只能访问有限的系统资源。但应用为了扩展功能的需要,需要访问
  • 注册表禁止用户安装应用程序 通过修改注册表达到禁止用户安装应用程序的目的,而不被一般用户破解,方便管理
  • Android6.0之后的有些权限需要去动态获取,这个过程中呢,我们或许会遇到这么几个方法。 1.ContextCompat.checkSelfPermission 检查权限是否允许 2.ActivityCompat.requestPermissions 请求某个或某几个权限 3....
  • iOS判断一些权限是否被禁止

    千次阅读 2017-07-08 01:09:04
    iOS中经常会遇到访问相册、相机、麦克疯、蓝牙、以及推送等权限,所以每次我们要使用这些权限是都要记得查看用户是否允许了,如果用户禁止了你的访问权限,你仍然去调取相册或者相机等,那么就会先出现下面的这个...
  •  1 为什么Android总是事无巨细地告诉你应用索取的每一项权限?  相比Apple,Microsoft严格控制生态系统(从苹果给开发者的"App Store Guideline"可见一斑),只允许通过官方应用商店安装应用,并对每份上
  • 获取手机上android应用程序的权限列表,在打印log里,log的TAG是jishen
  • 应用申请权限时,如果用户选择了禁止后不再提示(不再询问),那么未来再次向用户请求该权限时,系统将会默认禁止权限。这时候只能靠用户手动去授予权限,通过设计一个提示选择框来让用户选择,如果用户的确是想...
  • 提升进程权限为debug权限,无法禁止进程2007-03-30 20:58 在2004年11期黑防上刊登了《小工具巧删Guest/Administrator账户》这篇文章,有不少朋友来信询问工具是如何编写的,其实这个工具里面大部分代码是我拷贝FU_...
  • 文章目录内容介绍确定权限设置权限策略认证的基础方式DjangoModelPermissionsDjangoModelPermissionsOrAnonReadOnlyDjangoObjectPermissions自定义权限应用举例 内容介绍 身份认证和权限组合使用,用来确定请求是否...
  • 针对android 6.0(API 23)以前的版本,只需要在【AndroidManifedt.xml】里面添加应用权限,应用安装完成以后即可正常使用。 但是,对于android 6.0(API 23)以后的版本,系统允许用户单独管理应用的某个...
  • Android获取应用权限列表

    千次阅读 2018-05-28 20:36:03
    package ... import android.app.Activity; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager;...import android.content.pm...
  • adb授予安卓手机应用权限

    万次阅读 2019-12-27 15:12:11
    realme:打开禁止权限监控   华为手机暂时未发现此项设置,但是可以直接使用   脑残小米不插sim卡无法打开USB调试,醉了                  
  • 2.打开 “设置”去更改该应用权限(比如将“存储”权限由授权状态改为非授权状态)。 3.再将该应用重新切换到前台,会发现应用进行了重新启动。 因为,为了更好的用户体验,需要格外注意并处理。* 另外需要注意...
  • 应用的存储权限问题

    千次阅读 2017-02-22 21:50:55
    基于Service(没有任何activity)的应用不能申请外部存储权限.就是只能访问内部存储(即用户不能访问的空间,外部存储指存储可能是可移除的存储介质(例如 SD 卡)或内部(不可移除)存储,详情看下面链接) 有一种方法...
  • uni-app app 打开应用权限设置

    千次阅读 2021-03-15 15:52:08
    安卓机型太多目前还没找到合适的方法 有安卓方法的可以评论 break; case 'ios': 方法1 // plus.nativeUI.confirm("定位权限没有开启,是否去开启?", function(e) { // if (e.index != 0) {
  • 提升进程权限为debug权限,无法禁止进程 http://hi.baidu.com/%C7%E5%B7%E7%D0%A5%D0%A5/blog/item/5ba993d6a7dc0c2f07088ba3.html 我在2004年11期黑防上刊登了《小工具巧删Guest/Administrator账户》这篇文章,有...
  • 苹果mac怎么禁止某个应用联网?这篇文章主要介绍了苹果mac禁止某个软件联网教程,需要的朋友可以参考下。 苹果mac禁止某个软件联网教程 首先是点击dock栏的系统偏好设置。 点击***这里。 选择防火墙,然后...
  • 至于为什么设置上传目录无权限这个我就不累赘了,现在比较流行的web服务有iis,apache,nginx,使用操作系统无非是windows和linux ...这些配置表面上看起来是没什么问题的,确实在windows下可以这么说。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,315
精华内容 42,526
关键字:

哪些应用权限可以禁止