精华内容
下载资源
问答
  • Android Studio打开手机权限

    千次阅读 2020-10-06 00:29:41
    解决方法 最主要的自己手动动态打开权限,就像是下载一个APP,安装好,手机提示是否允许APP打开读取设备照片,文件权限,然后自己调试下运行代码,已经解决,手机响起《第十套广播体操》,目前的问题就算解决了,...

    java.io.FileNotFoundException: /storage/emulated/0/xxx.mp3: open failed: EACCES (Permission denied)

    总算是在万千博客中总结了一下遇到的这个bug,感觉每个人写的都是一部分的解决方法,很幸运解决了,所以记录一下,避免遇到的同志熬夜,希望有用,由于经验有限,温柔批评。

    BUG产生

    Android Studio刚入门,在做简单的MP3播放器时遇到这个困扰的BUG,由于MP3播放器上的.mp3文件是从本地存储设备(SD)卡上读取,所以需要一个读取的权限,这是因为基于安全性能的考虑,android 6.0(API 23)以后,google规定了系统需要动态获取权限 。在没有了解的情况下去运行代码会出现
    在这里插入图片描述
    于是我就复制这段bug# java.io.FileNotFoundException: /storage/emulated/0/xxx.mp3: open failed: EACCES (Permission denied)找百度,然后写写吐吐xue,放放弃弃的,主要是不知道代码怎么搞(刚入门)还有弄不清这个读写权限怎么打开。

    解决方法

    最主要的自己手动动态打开权限,就像是下载一个APP,安装好,手机提示是否允许APP打开读取设备照片,文件权限,然后自己调试下运行代码,已经解决,手机响起《第十套广播体操》,目前的问题就算解决了,代码如下:

    在这里插入图片描述
    然后在onCreate()中调用此方法。
    在mainfest.xml文件中注册静态权限:
    在这里插入图片描述
    重要的是如果加入代码后,问题还是没有解决,也要加入这段代码
    在这里插入图片描述
    运行代码如下
    在这里插入图片描述

    我是在Android 10上运行的,添加这段代码可以运行,具体为啥要添加代码?CSDN大佬比我解释清楚,以上BUG也是吸收CSDN大佬是文章解决,感谢!!!

    展开全文
  • content: '请先打开APP通知权限', showCancel: false, success: function (res) { if (res.confirm) { var UIApplication = plus.ios.import("UIApplication"); var NSURL = plus.ios.import("NSURL"); var ...

    一、苹果

    var UIApplication = plus.ios.import("UIApplication");
    var app = UIApplication.sharedApplication();
    var enabledTypes = 0;
    if (app.currentUserNotificationSettings) {
    var settings = app.currentUserNotificationSettings();
    enabledTypes = settings.plusGetAttribute("types");
    } else {
    //针对低版本ios系统
    enabledTypes = app.enabledRemoteNotificationTypes();
    }

    console.log("enabledTypes:"+enabledTypes);
    if ( 0 == enabledTypes ) {
    console.log("在通知栏中开启消息提示");
    }else{
    console.log("已开启");
    }

    plus.ios.deleteObject(app);

    也可以这样写:

    var UIApplication = plus.ios.import("UIApplication");
    var app = UIApplication.sharedApplication();
    var enabledTypes = 0;
    if (app.currentUserNotificationSettings) {
    var settings = app.currentUserNotificationSettings();
    enabledTypes = settings.plusGetAttribute("types");
    } else {
    //针对低版本ios系统
    enabledTypes = app.enabledRemoteNotificationTypes();
    }
    plus.ios.deleteObject(app);
    if ( 0 == enabledTypes ) {
    uni.showModal({
    title: '提示',
    content: '请先打开APP通知权限',
    showCancel: false,
    success: function (res) {
    if (res.confirm) {
    var UIApplication = plus.ios.import("UIApplication");
    var NSURL = plus.ios.import("NSURL");
    var setting = NSURL.URLWithString("app-settings:");
    var application = UIApplication.sharedApplication();
    application.openURL(setting);
    plus.ios.deleteObject(setting);
    plus.ios.deleteObject(application);
    }
    }
    });
    }

    官方示例:
    var UIApplication = plus.ios.import("UIApplication");
    var app = UIApplication.sharedApplication();
    var enabledTypes = 0;
    if (app.currentUserNotificationSettings) {
    var settings = app.currentUserNotificationSettings();
    enabledTypes = settings.plusGetAttribute("types");
    } else {
    enabledTypes = app.enabledRemoteNotificationTypes();
    }
    plus.ios.deleteObject(app);

    二、安卓代码
    var main = plus.android.runtimeMainActivity();
    var pkName = main.getPackageName();
    var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");
    var packageNames = NotificationManagerCompat.from(main);
    console.log(JSON.stringify(packageNames));
    if (packageNames.areNotificationsEnabled()) {
    console.log('已开启通知权限');
    }else{
    uni.showModal({
    title: '提示',
    content: '请先打开APP通知权限!',
    showCancel: false,
    success: function (res) {
    if (res.confirm) {
    var Intent = plus.android.importClass('android.content.Intent');
    var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
    //可设置表中所有Action字段
    intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);
    main.startActivity(intent);
    }
    }
    });
    }

    转载于:https://blog.51cto.com/11657004/2362198

    展开全文
  • 相信做过Android的都知道,现在的手机系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框。 而且用户一旦不小心点了拒绝,下次就不再询问了,而很多小白用户也不知道怎么去设置。这就导致了...

    相信做过Android的都知道,现在的手机系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框。
    而且用户一旦不小心点了拒绝,下次就不再询问了,而很多小白用户也不知道怎么去设置。这就导致了很不好的用户体验。
    经过研究,我发现像小米,魅族,这些满大街的系统,都是可以通过隐式意图打开权限设置页面的。
    这里指的是自身app的权限管理页面
    之前已经有人写过类似的文章,不过都比较分散,我这里把这些方法总结了一下。
    不多说,直接上代码。
    首先是最蛋疼的小米,百度了很多前辈留下的方法,发现都不能打开,没有办法,只能通过 adb dumpsys activity activities 命令去查看
    经过一番研究终于打开了。

    /** 
     * 跳转到miui的权限管理页面 
     */  
    private void gotoMiuiPermission() {  
        Intent i = new Intent("miui.intent.action.APP_PERM_EDITOR");  
        ComponentName componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");  
        i.setComponent(componentName);  
        i.putExtra("extra_pkgname", getPackageName());  
        try {  
            startActivity(i);  
        } catch (Exception e) {  
            e.printStackTrace();  
            gotoMeizuPermission();  
        }  
    }  

    接下来上魅族的代码

    /** 
     * 跳转到魅族的权限管理系统 
     */  
    private void gotoMeizuPermission() {  
        Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");  
        intent.addCategory(Intent.CATEGORY_DEFAULT);  
        intent.putExtra("packageName", BuildConfig.APPLICATION_ID);  
        try {  
            startActivity(intent);  
        } catch (Exception e) {  
            e.printStackTrace();  
            gotoHuaweiPermission();  
        }  
    }  

    华为的系统由于不太一样,有些系统是华为自己的权限管理,而6.0的是用的原生的权限管理页面,目前手上只有一台6.0的华为手机,
    暂时没有研究到打开的方法,如果有知道的大神麻烦告知一下
    不过打不开没关系,我们可以退而求其次,打开所用应用的权限管理页面

    /** 
     * 华为的权限管理页面 
     */  
    private void gotoHuaweiPermission() {  
        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();  
            startActivity(getAppDetailSettingIntent());  
        }  
    
    }  

    目前也就研究了这三大系统,对于原生系统,和其他系统,如果找不到方法,也可以先把用户引导到系统设置页面

    /** 
     * 打开应用详情页面intent 
     */  
    private Intent gotoAppDetailSettingIntent() {  
        Intent localIntent = new Intent();  
        localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
        if (Build.VERSION.SDK_INT >= 9) {  
            localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");  
            localIntent.setData(Uri.fromParts("package", getPackageName(), null));  
        } else if (Build.VERSION.SDK_INT <= 8) {  
            localIntent.setAction(Intent.ACTION_VIEW);  
            localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");  
            localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());  
        }  
        startActivity(localIntent); 
    } 
    展开全文
  • android各大手机系统打开权限管理页面

    万次阅读 热门讨论 2016-08-17 10:15:23
    相信做过android的都知道,现在的手机系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框。 而且用户一旦不小心点了拒绝,下次就不再询问了,而很多小白用户也不知道怎么去设置。这就导致了很...

    最近项目上比较忙,终于有空闲时间写写东西了。

    相信做过android的都知道,现在的手机系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框。

    而且用户一旦不小心点了拒绝,下次就不再询问了,而很多小白用户也不知道怎么去设置。这就导致了很不好的用户体验。

    经过研究,我发现像小米,魅族,这些满大街的系统,都是可以通过隐式意图打开权限设置页面的。

    这里指的是自身app的权限管理页面

    之前已经有人写过类似的文章,不过都比较分散,我这里把这些方法总结了一下。

    不多说,直接上代码。

    首先是最蛋疼的小米,百度了很多前辈留下的方法,发现都不能打开,没有办法,只能通过 adb dumpsys activity activities 命令去查看

    经过一番研究终于打开了。


        /**
         * 跳转到miui的权限管理页面
         */
        private void gotoMiuiPermission() {
            Intent i = new Intent("miui.intent.action.APP_PERM_EDITOR");
            ComponentName componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
            i.setComponent(componentName);
            i.putExtra("extra_pkgname", getPackageName());
            try {
                startActivity(i);
            } catch (Exception e) {
                e.printStackTrace();
                gotoMeizuPermission();
            }
        }

    接下来上魅族的代码


        /**
         * 跳转到魅族的权限管理系统
         */
        private void gotoMeizuPermission() {
            Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
            intent.addCategory(Intent.CATEGORY_DEFAULT);
            intent.putExtra("packageName", BuildConfig.APPLICATION_ID);
            try {
                startActivity(intent);
            } catch (Exception e) {
                e.printStackTrace();
                gotoHuaweiPermission();
            }
        }

    华为的系统由于不太一样,有些系统是华为自己的权限管理,而6.0的是用的原生的权限管理页面,目前手上只有一台6.0的华为手机,

    暂时没有研究到打开的方法,如果有知道的大神麻烦告知一下

    不过打不开没关系,我们可以退而求其次,打开所用应用的权限管理页面


        /**
         * 华为的权限管理页面
         */
        private void gotoHuaweiPermission() {
            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();
                startActivity(getAppDetailSettingIntent());
            }
    
        }

    目前也就研究了这三大系统,对于原生系统,和其他系统,如果找不到方法,也可以先把用户引导到系统设置页面


        /**
         * 获取应用详情页面intent
         *
         * @return
         */
        private Intent getAppDetailSettingIntent() {
            Intent localIntent = new Intent();
            localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            if (Build.VERSION.SDK_INT >= 9) {
                localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                localIntent.setData(Uri.fromParts("package", getPackageName(), null));
            } else if (Build.VERSION.SDK_INT <= 8) {
                localIntent.setAction(Intent.ACTION_VIEW);
                localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
                localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
            }
            return localIntent;
        }

    获取到intent之后直接startactivity就好了。。。

    造诣不够,就只知道这么多了,欢迎各位大牛补充!


    展开全文
  • android手机 录音权限是否打开的检测

    千次阅读 2016-10-08 13:46:25
    6.0之前的权限检测只是检测到是否在清单文件中注册 boolean flag = (PackageManager.PERMISSION_GRANTED ==  pm.checkPermission("android.permission.RECORD_AUDIO", "包名"));  boolean flag = ...
  • 判断是否打开相机权限,如果没有打开相机权限–当个笔记用 if (!ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.CAMERA)){ ActivityCompat.requestPermissions(this, new String[]{...
  • 记录下蓝牙连接与位置权限的问题: 首先,在蓝牙APP开发的时候需要位置权限: <!-- If your app targets Android 9 or lower, you can declare ...有些手机(红米)在设置界面中关掉位置信息,AP
  • Android Runtime Permission1,运行时权限说明: Android运行时权限,是Android6.0新加的功能点。当我们想要把我们的app适配到6.0 以及以上的时候,我们需要对运行时权限做些操作,否则很容易会造成程序崩溃,当我们...
  • 部分手机读取应用列表权限

    万次阅读 2018-08-08 15:20:39
    部分手机比如小米,华为在权限管理那里有个读取应用列表的权限,这个读取应用列表的权限不需要申请,部分手机系统默认就有的,并且默认打开。某型号小米手机关闭读取应用列表权限后仍然可以手机安装的第三方应用,...
  • vivo手机权限禁止–跳转至对应app的权限设置页面 开始我用的这个方法在vivo 酷派,oopo上:(在vivo上已不能使用) private void doStartApplicationWithPackageName(String packagename) { // 通过包名获取此APP...
  • 动态的开启手机权限(获取位置权限)

    千次阅读 2016-12-07 09:34:47
    因此需要开发者去判断用户手机是否高于6.0,或者api23,如果高于的话就让用户自己去开启权限,代码包含一个封装的工具类.你也可以添加其他权限的信息.还有一个就是activity 工具类: public c
  • Android提示用户获取相应手机权限

    万次阅读 2018-02-10 14:54:33
    一,简介Android 6.0 为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应用以...
  • 然后看到小米运动中,在手机管家中禁止了 它的蓝牙权限,只提示了用户需要开启蓝牙,然后我只点了确定,没有授权步骤 就打开了(其实是有授权步骤的,小米运动悄悄做了),我想知道这是怎么做到的, 我禁止权限后他...
  • 辅助功能 之 小米手机悬浮窗权限

    万次阅读 2016-06-02 19:30:40
    辅助功能 之 小米手机悬浮窗权限最近做项目遇到小米手机比较人(zhuang)性(bi)化的悬浮窗权限,当在小米手机上安装完应用后默认是关闭这个权限的,需要用户手动到应用详情页打开该权限。重(keng)要(die)的是使用这个...
  • android6.0手机权限问题

    千次阅读 2016-10-09 13:16:28
    今天测试提了一个头像上传失败的bug,让我郁闷很久!我的手机明明就可以成功,为什么他的失败。然後拿测试的手机过来调试 , 发现他用到时6.0系统 . 断点调试 , 抛了个异常,读取文件失败 .
  • uni-app 怎样打开位置权限

    千次阅读 2019-12-05 22:29:49
    manifest.json 设置权限 地图定位勾选 ...还有安卓手机打包权限配置打开 onShow() { //打开地图 chooseLocation() } export function chooseLocation(success){ // 先判断定位权限是否开启 uni.get...
  • 小米手机 root权限 获取

    万次阅读 2018-01-04 10:13:17
    1.上miui论坛下载 最新开发者 版本,根据提示刷成系统;我下载的是红米note1s 4G 电信  注意:里面有稳定版 开发版,需要区分下;见附图0 ...3.手机启动好后,打开RE文件管理器,此时提示权限获取弹框,
  • private void openAtutoStart() {  Intent intent2 = new Intent();  intent2.setAction("miui.intent.action.OP_AUTO_START");  intent2.addCategory("android.intent.category.DEFAULT");
  • 华为手机root权限教程?如今的智能机已经在广泛的普及,每一款手机都有自己一个最具有代表性的黑科技。而每个用户对手机选择的标准也大不相同。而小编就选择的是一款华为手机,看中的是它搭载的自主研发的海思麒麟CPU...
  • 魅蓝手机ROOT权限获取

    千次阅读 2016-12-28 17:16:21
    最近需要参加阿里天池安全攻防挑战赛,动态调试.so文件时需要一个获取ROOT权限手机,魅蓝ROOT过程如下:魅蓝Note很奇葩,自己ROOT自己,却不完全放开。如果用第三方ROOOT软件,如“大师”类的、百度的、QQ管家的...
  • android 手机获取 root 权限

    千次阅读 2019-06-11 22:01:36
    为了让android 手机获取root权限,需要经历以下几个步骤。 手机解锁 现在大部分的手机在出厂时都锁定了bootloader,需要在官网上申请解锁,以小米为例,解锁网址。解锁的具体教程不在此详述,注意解锁需要小米账号和...
  • 华为手机权限开启方法4

    千次阅读 2017-01-01 15:08:28
    华为手机最好打开系统的 手机管家 → 受保护应用,把我软件勾选上。
  • 坚果手机如何获取root权限

    千次阅读 2016-03-14 22:55:47
    坚果手机目前发现只能使用kingroot进行root权限获取,奇兔、root大师等均不可以,已验证 如下图所示:
  • 本人使用小米手机,打开qq或者微信的时候,某个权限拒绝的话,会提示你开启,点击开启会跳转到app的权限设置界面,当然了,这是国内系统深层定制的原因,也就是说这个界面原声的android没有的!这里以小米和魅族作为...
  • 今天集成了高德地图的定位SDK准备搞一下,在华为上定位回调中一直提示:错误码12,定位失败,位置服务未开启,开始还以为是动态权限的问题,看了一下发现权限是开启的,这就纳闷了,换了其他手机发现是正常的,这就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,050
精华内容 41,220
关键字:

怎么开手机权限