从Android 11开始,我在Pixel 3a Xl上请求权限时遇到了问题(升级到Android 11之后)。
因此,我有这个应用程序gradle文件:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 30
buildToolsVersion '30.0.2'
defaultConfig {
applicationId "nnt.codecexp"
minSdkVersion 23
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.preference:preference:1.1.0'
implementation "com.google.android.gms:play-services-maps:17.0.0"
implementation "com.google.android.gms:play-services-location:17.0.0"
}
以及 MainActivity 的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
}
@Override
protected void onStart() {
super.onStart();
String[] permissions = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION
};
requestPermissions(permissions, 0);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
for (int i = 0; i < permissions.length; i++) {
String permission = permissions[i];
boolean isGranted = grantResults[i] >= 0;
Log.d("atf", permission+" isGranted: "+isGranted);
}
}
}
我在Android Studio上对应用程序进行了全新安装,日志显示权限被自动拒绝,没有任何提示要求授予权限。(未显示提示窗口)。我知道在Android 11上如果用户拒绝了权限2次,系统会跳过后续的权限请求提示框并自动拒绝它们。但是这不是我的情况,在全新安装应用程序后就出现了该问题。(从Android Studio启动时设备上没有该应用程序)。
然而,如果我在gradle文件中将“targetSdkVersion 30”更改为“targetSdkVersion 29”,一切都能正常工作,如预期那样。
是否有人能告诉我为什么会发生这种情况,并且保持“targetSdkVersion 29”是否是解决此问题的好方法?
我做错了什么吗?还是谷歌 [删除] [删除] [删除]。