精华内容
下载资源
问答
  • 2021-05-26 14:57:53

    1.定义特殊的广播接收者,系统超级管理员的广播接收者

    public class MyDeviceAdminReceiver extends DeviceAdminReceiver{

    @Override

    public void onReceive(Context context,Intent intent){

    //TODO

    }

    }

    2.在AndroidManifest.xml文件中,注册超级管理员的广播接收者

    android:name="com.example.receiver.MyDeviceAdminReceiver"

    android:permission="android.permission.BIND_DEVICE_ADMIN">

    android:name="android.app.device_admin"

    android:resource="@xml/device_admin_sample"/>

    3.在res/xml中创建策略声明xml

    ...

    补充知识:Android通过代码获取ROOT权限

    获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了。

    首先我们需要检测是否已经有root权限,判断代码如下:

    // 判断是否具有ROOT权限

    public static boolean is_root(){

    boolean res = false;

    try{

    if ((!new File("/system/bin/su").exists()) &&

    (!new File("/system/xbin/su").exists())){

    res = false;

    }

    else {

    res = true;

    };

    }

    catch (Exception e) {

    }

    return res;

    }

    然后我们执行获取root权限的代码

    // 获取ROOT权限

    public void get_root(){

    if (is_root()){

    Toast.makeText(mCtx, "已经具有ROOT权限!", Toast.LENGTH_LONG).show();

    }

    else{

    try{

    progress_dialog = ProgressDialog.show(mCtx,

    "ROOT", "正在获取ROOT权限...", true, false);

    Runtime.getRuntime().exec("su");

    }

    catch (Exception e){

    Toast.makeText(mCtx, "获取ROOT权限时出错!", Toast.LENGTH_LONG).show();

    }

    }

    }

    以上这篇Android获取超级管理员权限的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    更多相关内容
  • App处理获取权限的弹窗

    千次阅读 2019-08-08 17:44:40
    在做APP自动化的时候经常会遇到启动app获取一些权限的弹窗了。 方案1:我们在启动先手动打开APP允许获取权限,然后在desired_caps中加上noReset等于True,这样启动APP就不会出现系统自带的权限弹窗了。 desired_caps...

    在做APP自动化的时候经常会遇到启动app后获取一些权限的弹窗了。
    方案1:我们在启动先手动打开APP允许获取权限,然后在desired_caps中加上noReset等于True,这样启动APP就不会出现系统自带的权限弹窗了。

    desired_caps = {
                'platformName': PLATFORM,
                'deviceName': deviceName,
                'appPackage': APP_PACKAGE,
                'appActivity': APP_ACTIVITY,
                'noReset': True,
                'newCommandTimeout': 800,
            }
    

    方案二 :封装一个独立的函数,判断系统权限弹窗,再启动后调用一下。[参考]@(https://my.oschina.net/u/873595/blog/792220)

        def resolve_windows(self):
                """权限处理弹窗"""
                try:
                    els = self.driver.find_elements_by_class_name('android.widget.Button')
                    while True:
                        for el in els:
                            if el.text == u'允许':
                                self.driver.find_element_by_android_uiautomator('new UiSelector().text("允许")').click()
                            elif el.text == u'始终允许':
                                self.driver.find_element_by_android_uiautomator('new UiSelector().text("始终允许")').click()
                            elif el.text == u'确定':
                                self.driver.find_element_by_android_uiautomator('new UiSelector().text("确定")').click()
                except:
                    print('未检测到弹窗')
    

    参考代码

    import random
    import time
    from selenium.webdriver.support import expected_conditions as EC
    from appium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    import os
    
    
    deviceName = os.popen('adb shell getprop ro.product.model').read()
    platformVersion = os.popen('adb shell getprop ro.build.version.release').read()
    device = os.popen('adb shell getprop ro.product.name ').read()
    
    # Appium基本参数
    PLATFORM = 'Android'
    DRIVER_SERVER = 'http://localhost:4723/wd/hub'
    class Automation():
        def __init__(self, APP_PACKAGE, APP_ACTIVITY):
            self.desired_caps = {
                'platformName': PLATFORM,
                'deviceName': deviceName,
                'appPackage': APP_PACKAGE,
                'appActivity': APP_ACTIVITY,
                'noReset': False,
                'newCommandTimeout': 800,
            }
            print('打开appium服务器')
            self.driver = webdriver.Remote(DRIVER_SERVER, self.desired_caps)
            self.wait = WebDriverWait(self.driver, 10)
            self.size = self.driver.get_window_size()
        def resolve_windows(self):
                """权限处理弹窗"""
                try:
                    els = self.driver.find_elements_by_class_name('android.widget.Button')
                    while True:
                        for el in els:
                            if el.text == u'允许':
                                self.driver.find_element_by_android_uiautomator('new UiSelector().text("允许")').click()
                            elif el.text == u'始终允许':
                                self.driver.find_element_by_android_uiautomator('new UiSelector().text("始终允许")').click()
                            elif el.text == u'确定':
                                self.driver.find_element_by_android_uiautomator('new UiSelector().text("确定")').click()
                except:
                    print('未检测到弹窗')
    
    AUTO = Automation('com.songheng.eastnews', 'com.oa.eastfirst.activity.WelcomeActivity')
    AUTO.resolve_windows()  # 调用处理弹窗函数
    
    展开全文
  • 利用Native.js获取当前App的授权状态,可打开App的授权设置界面,这里使用已封装好的permission.js插件,实现提示用户授权情况及设置功能。 插件下载地址:App权限判断和提示 - DCloud 插件市场 App平台...

    利用Native.js获取当前App的授权状态,可打开App的授权设置界面,这里使用已封装好的permission.js插件,实现提示用户授权情况及设置功能。

    插件下载地址:App权限判断和提示 - DCloud 插件市场

    一、使用方法

    1.下载插件并存放到项目目录下,比如:js_sdk/wa-permission/permisson.js

    2.在页面中引入js模块:

    import permission from '@/js_jdk/wa-permission/permission.js'

    3.调用模块的方法

    //判断IOS上是否给予位置权限,有权限返回true,否则返回false
    permission.judgeIosPermission('location');        

    二、IOS设备上当前App是否有某项权限

    方法1:Bool permission.judgeIosPermission(String permissionID)

    参数说明:

    参数名类型必填说明
    permissionIDStringios权限名称,值域清单如下列表

    permissionID值域清单

    参数名说明 
    location位置
    push推送(限IOS,注意Android上推送并不是一个权限)
    camera摄像头
    photoLibrary相册
    record麦克风
    contact通讯录
    calendar日历
    memo备忘录

    示例:

    //判断IOS上是否给予位置权限,有权限返回true,否则返回false
    permission.judgeIosPermission('location');        

    三、Android设备上当前App是否有某个权限

    方法2:await Number permission.requestAndroidPermission(String permissionID)

    注意:Android是动态权限,请求权限状态时会触发弹框访问是否赋权(如果已经同意或永久禁止则不会访问),所以必须使用异步方式来处理)

    参数说明

    参数名类型必填说明
    permissionIDStringAndroid权限名称,值域清单如下表

    permissionId值域清单

    参数名说明
    android.permission.ACCESS_FINE_LOCATION位置权限
    android.permission.ACCESS_COARSE_LOCATION模糊位置权限(蓝牙\ble依赖)
    android.permission.CAMERA摄像头权限
    android.permission.READ_EXTERNAL_STORAGE外部存储(含相册)读取权限
    android.permission.WRITE_EXTERNAL_STORAGE外部存储(含相册)定入权限
    android.permission.RECORD_AUDIO麦克风权限
    android.permission.READ_CONTACTS通讯录读取权限
    android.permission.WRITE_CONTACTS通讯录写入权限 
    android.permission.READ_CALENDAR日历读取权限
    android.permission.WRITE_CALENDAR日历写入权限
    android.permission.READ_SMS短信读取权限
    android.permission.SEND_SMS短信发送权限
    android.permission.RECEIVE_SMS接收新短信权限
    android.permission.READ_PHONE_STATE获取手机识别码等信息权限
    android.permission.CALL_PHONE拨打电话权限
    android.permission.READ_CALL_LOG获取通话记录权限

    这里支持Android所有android.permission的值,更多值可参考Android开发文档

    返回值值域说明

    permission.requestAndroidPermission(permissionID) 返回值为数字,包括-1、0、1这三个值。

    返回值说明
    1已获取授权
    0未获取授权
    -1被永久拒绝授权

    示例:

    // vue的method里编写如下代码
    async requestAndroidPermission(permisionID) {
        var result = await permision.requestAndroidPermission(permisionID)
        var strStatus
        if (result == 1) {
            strStatus = "已获得授权"
        } else if (result == 0) {
            strStatus = "未获得授权"
        } else {
            strStatus = "被永久拒绝权限"
        }
        uni.showModal({
            content: permisionID + strStatus,
            showCancel: false
        });
    }

    四、当前App的权限设置界面打开,可用于引导用户赋权。

    内部已封装,不必区分IOS和Android。

    示例代码:

    permision.gotoAppPermissionSetting()

    注:IOS上如果没有调用过的权限,不会出现在权限设置界面。Android碎版化严重,直接打开了App的设置界面。

    五、获取当前手机是否开启或关闭了定位服务

    内部已封装,不必区分IOS和Android

    返回值说明
    true开启
    false关闭

    示例:

    //返回true或false
    permision.checkSystemEnableLocation() 

    六、扩展阅读

    Native.js是用js调用原生API的一种写法,示例如下:

    判断定位权限是否开启以及手机自身的位置服务是否被关闭

    var cllocationManger = plus.ios.import("CLLocationManager");
    var enable = cllocationManger.locationServicesEnabled();
    var status = cllocationManger.authorizationStatus();
    console.log("enable:" + enable);
    console.log("status:" + status);
    if (enable && status != 2) {
        console.log("手机系统的定位已经打开且App已经获得定位权限");
    } else {
        console.log("手机系统的定位没有打开或App没有获得定位权限");
    }
    plus.ios.deleteObject(cllocationManger);

    七、相关权限判断与开启示例

    1.判断是否有拨打电话权限,示例如下:

    import permision from "@/js_sdk/wa-permission/permission.js"
    
    //检查是否开启通讯录服务
    export const checkContect = () => {
    	return new Promise((resolve, reject) => {
    		permision.requestAndroidPermission('android.permission.CALL_PHONE').then(res => {
    			if(res==1){
    				resolve();
    			}else if(res == 0){
    				uni.showModal({
    					title: '提示',
    					content: '被永久拒绝授权, 请打开拨打电话权限',
    					success() {
    						permision.gotoAppPermissionSetting();
    					}
    				});
    				reject();
    			}else if(res == -1){
    				uni.showModal({
    					title: '提示',
    					content: '未获取授权, 请打开拨打电话权限',
    					success() {
    						permision.gotoAppPermissionSetting();
    					}
    				});
    				reject();
    			}
    		}).catch(() => {
    			uni.showModal({
    				title: '提示',
    				content: '请打开拨打电话权限',
    				success() {
    					permision.gotoAppPermissionSetting();
    				}
    			});
    			reject();
    		});
    	});
    }
    
    
    //通过import将checkContect函数引入调用页面,调用方法如下
    // #ifdef APP-PLUS
    checkContect().then(() => {
        uni.makePhoneCall({
            phoneNumber: '手机或座机号码'
        }); 
    });
    // #endif

    2.检查是否开启位置信息服务

    import permision from "@/js_sdk/wa-permission/permission.js"
    
    // 检查是否开启位置信息服务
    export const checkOpenService = () => {
    	let result = permision.checkSystemEnableLocation();
    	if(!result) {
    		uni.showModal({
    			title: '提示',
    			content: '请打开定位服务功能',
    			showCancel: false,
    			success() {
    				var main = plus.android.runtimeMainActivity();
    				var Intent = plus.android.importClass('android.content.Intent');
    				var Settings = plus.android.importClass('android.provider.Settings');
    				var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    				main.startActivity(intent); // 打开系统设置GPS服务页面
    			}
    		});
    	}else {
    		console.log('已开启定位服务功能');
    	}
    }
    
    
    //通过import将checkOpenService函数名引入调用页,示例如下
    // #ifdef APP-PLUS
    let permissionStatus = checkOpenPermission();
    if(!permissionStatus){
    	return false;
    }
    // #endif

    其他权限判断与开启方法,可参考以上示例

    展开全文
  • RK3399 android8.1 app获取root权限

    千次阅读 2020-08-23 22:12:13
    这里指的是app能利用Runtime.getRuntime().exec("su")或者ProcessBuilder()等创建一个新的具有root权限的shell终端进程,而不是app本身拥有... 我是参考了[九鼎RK3399Pro] Android 8.1 系统定制给用户root权限这篇文...

            这里指的是app能利用Runtime.getRuntime().exec("su")或者ProcessBuilder()等创建一个新的具有root权限的shell终端进程,而不是app本身拥有root权限。使得app自身具有root权限这个我没有研究过,但使得app自身具有system权限则可以使用签名,在Android Framework 之HelloWorld(三)里有描述。

            我是参考了[九鼎RK3399Pro] Android 8.1 系统定制给用户root权限这篇文章,对NanoPC-T4开发板进行修改的,不过还要修改system/core/adb/set_verity_enable_state_service.cpp->set_verity_enabled_state_service(),这样运行adb disable-verity才正常,adb remount后也能读写/system和/vendor分区了,有点投机取巧,调试阶段应该还有其他办法直接让/system和/vendor在系统起来时就挂载成可读写分区,毕竟adb disable-verity需要重启生效:

    if (!android::base::GetBoolProperty("ro.secure", false)) {
        WriteFdFmt(fd, "verity not enabled - ENG build\n");
        //return; //不返回
    }

            下面是修改后su程序的other用户权限是x,能够执行。在root和shell用户下能临时修改到其他用户去,譬如 su u0_a58等。文章中还屏蔽了SElinux,同时把一些工具(如su和adb等)的判断自身是否具有相应权限的代码注释掉了。

    su工具修改前
    ls -l /system/xbin/su
    -rwsr-x--- 1 root shell 11064 2020-08-07 10:42 /system/xbin/su
    
    su工具修改后
    ls -l /system/xbin/su                                            
    -rwsr-sr-x 1 root root 11064 2020-08-20 13:17 /system/xbin/su

            所以,无论当前app运行在哪个用户(如u0_a58之类的)里,都能在app上运行root权限的命令。

    private void rootRun(String cmd)
        {
            try {
                // 申请获取root权限
                Process process = Runtime.getRuntime().exec("su"); //"/system/xbin/su"
                // 获取输出流
                OutputStream outputStream = process.getOutputStream();
                InputStream is = process.getInputStream();
                InputStream es = process.getErrorStream();
                DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
                dataOutputStream.writeBytes(cmd);
                dataOutputStream.flush();
                dataOutputStream.close();
                outputStream.close();
                int code = process.waitFor();
                Log.d("TAG", "Run:\"" + cmd +"\", "+"process.waitFor() = " + code);
                String line;
                BufferedReader br;
                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                while ((line = br.readLine()) != null) {
                    Log.d("TAG", line);
                }
    
                br = new BufferedReader(new InputStreamReader(es, "UTF-8"));
                while ((line = br.readLine()) != null) {
                    Log.e("TAG", line);
                }
    
            } catch (Throwable t) {
                Log.e("TAG", "Throwable = " + t.getMessage());
                t.printStackTrace();
            }
        }
    
    
    ...
    ...
    rootRun("reboot"); //运行shell命令,在app里重启android系统
    

     

    展开全文
  • uni-app获取用户信息

    万次阅读 2020-03-28 13:47:47
    1.uni-app获取用户信息首先需要获取到code,和微信小程序获取用户信息步骤一样,只不过微信小程序是从wx.login里获取,而uni-app是从uni.login里获取。代码如图一 图一 2.通过获取到的code,向后台换区openid和...
  • 最近刚接触了uni-app,用于开发微信小程序,设计到了微信授权登录。抽个时间整理个笔记,适用于向我一样刚开始上手uni-app的初学者...onLoad中调用 uni.login()获取登录用户code 调用后端接口,将code作为参数置换出Se
  • Android App跳转权限设置页面工具类

    千次阅读 2022-01-18 14:28:56
    /** * @ClassName : PermissionUtil * @Author : wqf * @Date: 2022/1/18 0018 14:19 * @Description :Android跳转权限设置页面工具类 */ public class PermissionUtil { public static void gotoPermission...
  • uni-app App权限配置

    千次阅读 2022-04-17 11:42:09
    android.permission.ACCESS_COARSE_LOCATION 获取错略位置 通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 android.permission.ACCESS_FINE_LOCATION 获取精确位置 通过GPS芯片接收...
  • 如今是互联网的时代,也是大数据的时代,只要你用过个人信息登录过手机...那么APP获取权限都是为了什么呢?APP获取权限时真的要全部同意吗?今天笔者就跟大家探讨一下关于手机权限的那些事! 短信权限 一般需要登...
  • 用Androd studio 开发的app,编译出apk, 想获取system权限。 环境:编译好的apk, android 源码环境,有root权限和源码对应的开发板,我这里是user版本。 思路:1 可以的话直接把整个app源码移到 android源码上编译...
  • PermissionNote:AS开发App权限设置

    千次阅读 2019-07-20 23:29:56
    Android开发:AS开发App权限设置 1、权限申请 在AndroidManifest文件进行权限申请即可: 具体介绍一下权限 常用的权限名称: 拍照权限:android.permission.CAMERA 读取电话状态权限:android....
  • 获取App通知权限是否开启的方法

    千次阅读 2018-08-10 09:37:02
    我们有时候需要获知用户是否允许了App在通知栏显示通知,设置入口一般见于AppInfo即应用详情页面。  方法来自于官方的support包,必须先更新build.gradle中的support包版本到24以上: compile '...
  • 今天我们要说的是关于雷电模拟器超级用户权限是什么、怎么设置超级用户权限以及一直弹出【获取超级用户权限】的提示怎么关闭的问题,还有就是如何自动允许软件获得超级用户权限。雷电模拟器超级用户权限是什么?超级...
  • 安卓应用开发,在做推送功能时会用到推送权限是否打开的检测(虽然系统默认时打开的),但是有些用户可能会特意关掉(尤其时测试人员),那么如何获取用户手机推送权限的状态呢,在网上搜到的代码有以下两种。...
  • 最近有一个H5项目需要打包成APP,通过HBuilderx中的原生云打包(具体过程百度一下很详细),项目中需要获取相机的权限,程序中是通过 navigator.myGetUserMedia调取相机的,但是一打包就不能实现,必须通过手动给权限...
  • H5+APP实现联网和定位权限提醒并跳转至设置 H5+APP的项目需要用户联网并且定位,没有开启相关权限将导致APP无法正常使用。故在程序打开是需要检测用户的手机是否开启相关权限,没有开启将提醒用户开启。 HTML5 网络...
  • uniapp 安卓和ios权限获取

    千次阅读 2021-05-14 11:14:23
    开发app的话,uniapp提供的获取权限的api就用不了了,所以大家可以直接去下面这个链接,这是uniapp官方推荐的权限获取插件,封装的挺好的 app权限获取插件链接 这个插件对安卓来说没什么问题,但在ios上会有一个...
  • 判断所添加的权限有没有生效
  • /* 获取当前手机是否有通知权限 */ // #ifdef APP-PLUS let main = plus.android.runtimeMainActivity(); let pkName = main.getPackageName(); let NotificationManagerCompat = plus.android.importC...
  • 微信小程序之获取用户位置权限

    千次阅读 2021-04-29 11:11:59
    微信小程序获取用户当前位置有三个方式: 1.wx.getLocation 注意: 先要在app.json里配置permission: 不然就会出现以下提示(本地测试环境): 配置如下: "permission": { "scope.userLocation": { ...
  • iOS 获取用户是否有(相册/相机)权限

    千次阅读 2020-12-30 07:02:25
    判断用户是否有权限访问相册#import ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];if (author == ALAuthorizationStatusRestricted || author ==ALAuthorizationStatusDenied){//无权限 ...
  • 6.0以后申请权限都要申请运行时权限,app第一次运行时都会弹出授权框 有些麻烦,默认授予运行时权限如下: diff --git a/frameworks/base/services/core/java/...
  • Android提示用户获取相应手机权限

    万次阅读 2018-02-10 14:54:33
    将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应用以获取****权限用户点击可以选择给应用相应...
  • Android的逻辑存储结构有三种 内部存储结构 Internal Private Storage ...每次安装APP,最初开始的时候都有一系列的获取用户权限的按钮,包括地理位置,picture,movie等目录。 Android要求获取公共权限时...
  • uni-app获取当前位置

    千次阅读 2020-12-20 20:26:41
    在微信小程序中,当用户离开应用后,此接口无法调用,除非申请后台持续定位权限;当用户点击“显示在聊天顶部”时,此接口可继续调用。例:uni.getLocation({type: 'wgs84',success: function (res) {console.log('...
  • uni-app 小程序项目无法直接获取到地理位置,只能通过获取到的经纬度,调用第三方地图Api获取。 1.在 manifest.json - 微信小程序配置 - 填写微信小程序AppID、选择位置接口,填写申请原因 2.选择第三方地图Api...
  • 在uni-app中如何配置权限 首先,我们先通过API了解,他对权限的需求,比如在上个帖子中 ===>>对APP后台静默更新升级对文件管理和文件下载权限的需求 当时我们使用了这个权限: android.permission.WRITE_...
  • 接到产品经理的预研需求,说希望获取用户已安装应用列表。这个问题应该不难,只要是要把相关的知识点整理和验证一下。对于获取用户已安装应用列表,我个人是很熟悉的,因为我的华为手机上,手机管家天天会在通知栏弹...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,017
精华内容 59,206
关键字:

如何设置app获取用户权限