Skip to content

基础权限

一直以来,Android在权限上面做了很多变化,并且有逐步收紧的态势。包括国内各大厂商也是绞尽脑汁限制APP申请各类权限。Android权限一直以来都被滥用、或者非法利用,导致用户权益严重受损,甚至财产安全也得不到保证。DeekeScript作为RPA领域的后来者,也深知保护用户的隐私的重要性,同时大量的权限申请也会严重影响用户体验,基于此两方面。我们只提供尽可能少的权限!

DeekeScript权限主要划分为2种,一种是必须用户授权的权限(这类权限通常不需要开发者进行判断,框架内部会自动判断是否开启,未开启则提示用户开启);另外一类则是可选权限(根据需要提醒用户是否授权),比如图色识别,这类权限需要开发者进行判断,如果代码执行需要开启但是未开启则提醒用户开启。

无障碍权限

重要等级:必须

无障碍权限是DeekeScript必须权限,因为DeekeScript是基于无障碍应用,因此用户必须开启。无需开发者提醒用户开启。用户运行对应任务的时候,系统会自动提醒用户开启

悬浮窗权限

重要等级:必须

悬浮窗权限是DeekeScript必须权限,悬浮窗权限主要有5个作用:一是展示当前任务运行时间、二是作为关闭任务的开关(双击两次,间隔2-5秒)、三是保持屏幕常亮、四是后台启动其他APP应用、五是后台弹出弹窗。无需开发者提醒用户开启。

后台弹窗权限

重要程度:可选

后台弹窗权限在一些机型是必须的,否则可能无法从后台打开其他APP应用

if(!Access.isBackgroundAlertEnabled()){
    Dialogs.confirm('温馨提示', '请开启后台弹窗权限', (result) => {
        Access.openBackgroundAlertSetting();
        System.exit();//关闭当前任务    
    });
}

图色权限

重要程度:可选

如果需要使用图片比对、查找,颜色查找、比对等功能,就需要开启此权限

if(!Access.isMediaProjectionEnable()){
    Dialogs.confirm('温馨提示', '请开启屏幕截图权限', (result) => {
        Access.openMediaProjectionSetting();
        System.exit();//关闭当前任务    
    });
}

是否开启通知权限

重要程度:可选

let hasAccess = Access.hasNotificationAccess();

console.log('是否有通知读取权限', hasAccess);

if (!hasAccess) {
    Access.requestNotificationAccess();
    System.exit();
}

媒体权限

重要程度:可选

如果需要访问相册、视频、音频、下载文件、文档等媒体文件,需要申请媒体权限。媒体权限会根据Android版本自动请求相应的权限:

  • Android 13+: 请求 READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO
  • Android 10-12: 请求 READ_EXTERNAL_STORAGE
  • Android 9-: 请求 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE

检查媒体权限

javascript
// 检查是否有媒体读取权限
let hasPermission = Access.hasMediaReadPermission();
console.log('是否有媒体权限', hasPermission);

申请媒体权限

javascript
// 检查权限是否被永久拒绝(用户选择了"不再询问")
if (Access.isMediaPermissionPermanentlyDenied()) {
    // 权限被永久拒绝,需要引导用户去设置页面手动开启
    Dialogs.show('提示', '需要媒体权限才能继续,请在设置中开启');
    Access.openPermissionSettings(); // 打开应用权限设置页面
    System.exit();
} else {
    // 正常请求权限
    Access.requestMediaPermissions();
}

打开权限设置页面

javascript
// 打开应用权限设置页面,用户可以手动开启权限
Access.openPermissionSettings();

文件权限

javascript
//判断是否有文件读写权限
if (!Access.hasStoragePermission()) {
    console.log('没有权限');
    if (Access.isStoragePermissionPermanentlyDenied()) {
        console.log('禁止了权限');
        Access.openPermissionSettings();//永久禁止,需要用户进入当前设置页手动打开
    } else {
        Access.requestStoragePermission();//请求权限
        console.log('请求权限');
    }
} else {
    console.log('有权限');
}

Released under the ISC License.