android - 我的应用在从 google play store 下载时没有请求权限。我在清单文件中指定了位置权限
问题描述
主文件
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<application
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/hero3"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="info.food360.nikhil.splash"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="info.food360.nikhil.MainActivity"
android:windowSoftInputMode="adjustPan|adjustResize"
android:theme="@style/AppTheme.NoActionBar"/>
<activity
android:name="info.food360.nikhil.DesActivity"
android:configChanges="orientation|screenSize"
android:label="DestinationActivity" />
<activity android:name="info.food360.nikhil.Suggestion" />
<activity android:name="info.food360.nikhil.LocationWork" />
<activity android:name="info.food360.nikhil.logicBehind"></activity>
</application>
我的应用程序需要位置权限我认为谷歌游戏商店会在下载时询问,但用户必须手动设置位置。谷歌游戏商店应该询问我应该在我的代码中添加什么的方式是什么?
解决方案
如果您在 android API 版本 23 或更高版本中运行,则需要在运行时要求权限。要请求权限,您应该在使用使用权限的功能之前立即进行:
int MY_PERMISSIONS_REQUEST_LOCATION = 123;
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
//app doesn't have permission yet
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
} else {
// Permission has already been granted
}
然后重写 onRequestPermissionsResult 看用户是否给了权限:
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_LOCATION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted
} else {
// permission denied
}
return;
}
}
}
推荐阅读
- mysql - SQl 工作台在连接 vis ssh 时崩溃
- javascript - 谷歌表格/应用程序脚本将公式复制到新行
- angular - 为什么 DataTable 排序不能在 Angular 9 上工作
- powershell - 更改 ConvertFrom-CSV 对象的类型
- java - Akka 2.6.3 中的问题可取消
- c - 在嵌套结构数组上使用 qsort
- android - 如果 GPS/位置打开,则未检测到位置,但我没有 Wifi 或移动数据 Nougat 7.0 华为
- java - Spring Boot Rest API 不会在 Tomcat 8.5.47 上部署,并带有“org.apache.catalina.LifecycleException: Failed to start component”
- javascript - Vue:是否可以将 app.vue 中的方法放入新组件中?
- ruby-on-rails - 提供 Portfolios#sho Nil 位置中的 ArgumentError。无法构建 URI