Android 更新Play Store上的应用程序(sdk 23)时出错
我正在Play Store上提交我的应用程序(sdk 23)的更新版本,并在Beta Tester中发布该部分时给出此权限错误 我已经使用sdk 23的Android 更新Play Store上的应用程序(sdk 23)时出错,android,google-play-services,Android,Google Play Services,我正在Play Store上提交我的应用程序(sdk 23)的更新版本,并在Beta Tester中发布该部分时给出此权限错误 我已经使用sdk 23的requestPermission进行了更改: if (Utils.isMarshmallow()) { if (ContextCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.P
requestPermission
进行了更改:
if (Utils.isMarshmallow()) {
if (ContextCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, new String[] {android.Manifest.permission.ACCESS_COARSE_LOCATION},
Utils.MY_PERMISSION_ACCESS_COARSE_LOCATION);
}
}
但考虑到Android sdk<23的设备,我的清单如下所示:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> `
仍在获取错误消息:
无法使用旧式权限(SDK 22及更低版本)将以前使用M权限(SDK 23及更高版本)的设备降级为APK。这发生在将版本32(23 SDK)更改为版本29(SDK 19)时
清单和/或内部版本中的targetSdkVersion应为23或更大。清单和/或内部版本中的targetSdkVersion应为23或更大。
targetSdkVersion应为23或更大。您还需要请求运行时许可才能写入外部存储
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//检查是否需要权限
if (!checkPermission()) {
requestPermission();
} else {
//perform your task
}
private boolean checkPermission () {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
for (String permission : REQUEST_PERMISSIONS) {
if (ActivityCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
private void requestPermission () {
ActivityCompat.requestPermissions(this, REQUEST_PERMISSIONS, REQUEST_PERMISSION_CODE);
}
@Override
public void onRequestPermissionsResult ( int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults){
if (requestCode == REQUEST_PERMISSION_CODE) {
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//perform your task
}
}
}
if(!checkPermission()){
requestPermission();
}否则{
//完成你的任务
}
私有布尔检查权限(){
if(Build.VERSION.SDK_INT
您还需要请求写入外部存储的运行时权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//检查是否需要权限
if (!checkPermission()) {
requestPermission();
} else {
//perform your task
}
private boolean checkPermission () {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
for (String permission : REQUEST_PERMISSIONS) {
if (ActivityCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
private void requestPermission () {
ActivityCompat.requestPermissions(this, REQUEST_PERMISSIONS, REQUEST_PERMISSION_CODE);
}
@Override
public void onRequestPermissionsResult ( int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults){
if (requestCode == REQUEST_PERMISSION_CODE) {
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//perform your task
}
}
}
if(!checkPermission()){
requestPermission();
}否则{
//完成你的任务
}
私有布尔检查权限(){
if(Build.VERSION.SDK_INT
不知何故,实际使用的值似乎是19。重新检查所有清单副本、清除缓存等。不知何故,实际使用值似乎为19。重新检查所有清单副本、清除缓存等。这个答案非常重要,应该放在Android开发者文档中。自从API23以来,很难理解Android开发者关于权限的文档,我认为开发者文档太政治化了(有点政治化是可以的,但缺乏动手能力)。我完全出乎意料。这是一个非常清晰易懂的工作答案。这个示例代码比一页页的文本要清晰得多。这个答案非常重要,应该放在Android开发者文档中。自从API23以来,很难理解Android开发者关于权限的文档,我认为开发者文档太政治化了(有点政治化是可以的,但缺乏动手能力)。我完全出乎意料。这是一个非常清晰易懂的工作答案。这个示例代码比一页页的文本清晰得多。