gpt4 book ai didi

android - Ionic 始终允许定位 API 级别 29

转载 作者:行者123 更新时间:2023-12-04 13:12:27 25 4
gpt4 key购买 nike

我正在尝试在我的 ionic 应用程序上使用 API 级别 29,并且我要求该应用程序向用户询问“始终允许”位置。我已经添加了所有建议的修改。
我的 AndroidManifest.xml:

 <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION">
<uses-permission android:name="android.permission.PERMISSION.FOREGROUND_SERVICE">
我的 app.component.ts:
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
this.setProviders();
this.checkBackgroundPermission();
});
}

private async checkBackgroundPermission() {
try {
const result = await this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.ACCESS_BACKGROUND_LOCATION);
if (!result || result.hasPermission === false) {
this.requestPermissions();
}
} catch (error) {
this.requestPermissions();
}
}

private async requestPermissions() {
try {
const data = await this.androidPermissions.requestPermissions([
this.androidPermissions.PERMISSION.ACCESS_BACKGROUND_LOCATION,
this.androidPermissions.PERMISSION.ACCESS_COARSE_LOCATION,
this.androidPermissions.PERMISSION.ACCESS_FINE_LOCATION,
this.androidPermissions.PERMISSION.ACTIVITY_RECOGNITION,
this.androidPermissions.PERMISSION.FOREGROUND_SERVICE
]);
if (!data.hasPermission) {
throw new Error('No permission');
}
} catch (error) {
await this.alertService.showAlert(
'Background location',
'We need background location access in order to continue.'
);
this.signOut();
}

但是,当我以 Api Level 29 为目标时,它不会一直显示允许位置的请求。
allthetime
但如果我使用 Api Level 28,它会显示我需要的权限
有什么建议可以完成这项工作吗?

最佳答案

我有完全相同的问题。以下对我有用。

  • 使用 AndroidPermissions 请求以下权限。
    const data = await this.androidPermissions.requestPermissions([
    "android.permission.ACCESS_BACKGROUND_LOCATION",
    "android.permission.ACCESS_COARSE_LOCATION",
    this.androidPermissions.PERMISSION.ACCESS_FINE_LOCATION,
    ]);

  • 注意字符串 "android.permission.ACCESS_BACKGROUND_LOCATION" , 而不是 this.androidPermissions.PERMISSION.ACCESS_BACKGROUND_LOCATION ,这在运行时实际上是未定义的。我的猜测是 ACCESS_BACKGROUND_LOCATION AndroidPermissions 时权限不存在插件已发布。
  • 调用requestPermissions背景位置之前的方法。这个非常重要。
  • 添加 <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />到平台\android\app\src\main\AndroidManifest.xml
  • 关于android - Ionic 始终允许定位 API 级别 29,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63676512/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com