uni-app android手机获取是否开启了开发者模式,返回null
uni-app android手机获取是否开启了开发者模式,返回null
示例代码:
var Secure = plus.android.importClass('android.provider.Settings$Secure');
var mainActivity = plus.android.runtimeMainActivity();
var ContentResolver = plus.android.invoke(mainActivity, 'getContentResolver');
var state = plus.android.invoke(Secure, 'getInt', ContentResolver, Secure.ADB_ENABLED, 0);
console.log(state);
操作步骤:
- 执行代码
预期结果:
- 返回 0 或者 1
实际结果:
- null
bug描述:
- android手机获取是否开启了开发者模式,返回null
更多关于uni-app android手机获取是否开启了开发者模式,返回null的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app android手机获取是否开启了开发者模式,返回null的实战教程也可以访问 https://www.itying.com/category-93-b0.html
出现返回null的情况通常与Android系统权限限制有关。在Android 6.0及以上版本中,Settings.Secure.ADB_ENABLED的读取权限受到严格限制。
问题分析:
- 普通应用无法直接读取ADB调试状态,这是Android系统的安全机制
- 需要
READ_SECURE_SETTINGS系统权限,但该权限普通应用无法获取 - 部分定制ROM可能完全禁止此接口的访问
解决方案:
- 检查权限声明(但效果有限):
// 在manifest.json中声明
"permissions": [
"android.permission.READ_SECURE_SETTINGS"
]
- 使用条件判断替代方案:
// 通过其他可访问的系统设置间接判断
try {
var Global = plus.android.importClass('android.provider.Settings$Global');
var developmentSettings = plus.android.invoke(Global, 'getInt',
ContentResolver, Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
console.log('开发设置状态:', developmentSettings);
} catch(e) {
console.log('无法获取开发设置状态');
}
- 错误处理增强:
try {
var state = plus.android.invoke(Secure, 'getInt', ContentResolver, Secure.ADB_ENABLED, 0);
console.log('ADB状态:', state);
} catch(e) {
console.log('获取ADB状态失败:', e.message);
// 返回默认值或执行降级逻辑
}

