Tur*_*Aza 4 android android-location ionic-framework ionic-native
我正在尝试在我的离子应用程序上使用 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">
Run Code Online (Sandbox Code Playgroud)
我的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();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我以 Api 级别 29 为目标时,它不会始终显示允许位置的请求。
但如果我使用 Api 级别 28,它会显示我需要的权限
有什么建议可以让这项工作成功吗?
小智 7
我有完全相同的问题。以下内容对我有用。
const data = await this.androidPermissions.requestPermissions([
"android.permission.ACCESS_BACKGROUND_LOCATION",
"android.permission.ACCESS_COARSE_LOCATION",
this.androidPermissions.PERMISSION.ACCESS_FINE_LOCATION,
]);
Run Code Online (Sandbox Code Playgroud)
请注意字符串"android.permission.ACCESS_BACKGROUND_LOCATION",而不是this.androidPermissions.PERMISSION.ACCESS_BACKGROUND_LOCATION,它实际上在运行时未定义。我的猜测是,该插件发布ACCESS_BACKGROUND_LOCATION时该权限不存在。AndroidPermissions
在Background Location之前调用该requestPermissions方法。这个非常重要。
添加<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />到platforms\android\app\src\main\AndroidManifest.xml
| 归档时间: |
|
| 查看次数: |
3420 次 |
| 最近记录: |