You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NS8安卓Target SDK30无法识别ACCESS_BACKGROUND_LOCATION权限如何解决

问题解决方案

1. 权限无法识别的问题修复

ACCESS_BACKGROUND_LOCATION是Android 10(API 29)才新增的权限,无法识别通常是两种原因,对应解决方法如下:

  • 编译时类型报错:NativeScript的Android类型定义未覆盖该权限,可以直接用字符串常量"android.permission.ACCESS_BACKGROUND_LOCATION"代替android.Manifest.permission.ACCESS_BACKGROUND_LOCATION,如果还有TS报错可以加// @ts-ignore临时忽略,运行时不会受影响;也可以自行扩展android全局对象的类型定义补全该属性。
  • 运行时报错找不到该值:确认你的项目编译SDK版本不低于29,打开App_Resources/Android/app.gradle修改配置:
android {
  compileSdkVersion 30
  defaultConfig {
    targetSdkVersion 30
  }
}

2. 后台权限弹窗弹不出来的注意事项

Android 11(API 30)对后台位置权限的申请流程有严格限制,必须遵循以下流程才能触发系统弹窗:

  • 必须先申请ACCESS_FINE_LOCATION前台位置权限,拿到用户授权之后才能申请后台位置权限,不能同时申请两个权限,否则系统会直接拒绝申请,不会弹出选择框。
  • 申请逻辑触发后,系统弹窗会出现「始终允许」选项,就是你合规演示需要的后台权限申请弹窗。

3. 修正后的参考代码

import {
   AndroidActivityRequestPermissionsEventData,
   AndroidApplication,
   android as andApp
} from '@nativescript/core/application';

// 先确认前台位置权限已经拿到(可以用nativescript-community/ble已经实现的申请逻辑先拿到前台权限)
if (androidx.core.content.ContextCompat.checkSelfPermission(
  andApp.foregroundActivity, 
  android.Manifest.permission.ACCESS_FINE_LOCATION
) === android.content.pm.PackageManager.PERMISSION_GRANTED) {
  const neededPermission = "android.permission.ACCESS_BACKGROUND_LOCATION";
  const activity = andApp.foregroundActivity || andApp.startActivity;
  
  const permissionCb = (args: AndroidActivityRequestPermissionsEventData) => {
    if (args.requestCode === 1001) {
      const isGranted = args.grantResults[0] === android.content.pm.PackageManager.PERMISSION_GRANTED;
      console.log('后台位置权限申请结果:', isGranted);
      // 用完移除事件监听,避免内存泄漏
      andApp.off(AndroidApplication.activityRequestPermissionsEvent, permissionCb);
    }
  };

  andApp.on(AndroidApplication.activityRequestPermissionsEvent, permissionCb);
  androidx.core.app.ActivityCompat.requestPermissions(activity, [neededPermission], 1001);
}

4. 谷歌Play后台配置补充

应用内逻辑调整完成后,还需要前往Play Console的「敏感应用权限」板块,找到后台位置权限的声明入口,提交你的应用使用该权限的场景说明,同时上传你录制的权限申请演示视频,即可解决上传时的权限未声明警告。


内容的提问来源于stack exchange,提问作者Jose Chavez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:57:03