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的读取权限受到严格限制。

问题分析:

  1. 普通应用无法直接读取ADB调试状态,这是Android系统的安全机制
  2. 需要READ_SECURE_SETTINGS系统权限,但该权限普通应用无法获取
  3. 部分定制ROM可能完全禁止此接口的访问

解决方案:

  1. 检查权限声明(但效果有限):
// 在manifest.json中声明
"permissions": [
  "android.permission.READ_SECURE_SETTINGS"
]
  1. 使用条件判断替代方案
// 通过其他可访问的系统设置间接判断
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('无法获取开发设置状态');
}
  1. 错误处理增强
try {
  var state = plus.android.invoke(Secure, 'getInt', ContentResolver, Secure.ADB_ENABLED, 0);
  console.log('ADB状态:', state);
} catch(e) {
  console.log('获取ADB状态失败:', e.message);
  // 返回默认值或执行降级逻辑
}
回到顶部