这是我到目前为止所做的,但问题是,代码从不要求权限,没有错误,没有强制关闭。我目前正在测试android 6.0设备。我甚至在设置中撤销了权限,但它仍然没有要求。我已经发布了以下完整代码 -
package com.example.pper;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.util.Log;
public class MainActivity extends Activity {
private String TAG;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
isStoragePermissionGranted();
}
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Log.v(TAG, "Permission is granted");
return true;
} else {
Log.v(TAG, "Permission is revoked");
ActivityCompat
.requestPermissions(
this,
new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
1);
return false;
}
} else { // permission is automatically granted on sdk<23 upon
// installation
Log.v(TAG, "Permission is granted");
return true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.v(TAG, "Permission: " + permissions[0] + "was "
+ grantResults[0]);
// resume tasks needing this permission
}
}
}
答案 0 :(得分:0)
检查shouldShowRequestPermissionRationale()
- 如果您之前有对话框并点击“再也不要再问”,它将永远不会再请求您进行更新。
为了帮助找到用户可能需要解释的情况,Android提供了一个实用方法,shouldShowRequestPermissionRationale()。如果应用先前已请求此权限且用户拒绝了该请求,则此方法返回true。
注意:如果用户过去拒绝了权限请求,那么 在权限请求系统中选择了“不再询问”选项 对话框,此方法返回false。如果a,该方法也返回false 设备政策禁止该应用获得该许可。
答案 1 :(得分:0)
请确保您的清单文件包含以下内容:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="25" />