【发布时间】:2017-08-08 18:52:09
【问题描述】:
我正在使用三星 Galaxy Tab S 平板电脑,并尝试在运行时授予在外部存储上写入的权限。
但是请求权限的对话框没有出现。相反,在代码中 onRequestPermissionResult 将立即执行,并带有 PERMISSION_DENIED 结果。我什至尝试在设备上的应用程序设置中手动授予存储权限,但即便如此,结果也会是 PERMISSION_DENIED(grantResults 为 -1)。
我的代码如下所示:
public class MainActivity extends AppCompatActivity {
public static final int REQUEST_STORAGE_PERMISSION = 225;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
process();
} else {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE_PERMISSION);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_STORAGE_PERMISSION:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getApplicationContext(), "Permission Granted", Toast.LENGTH_LONG).show();
process();
} else {
Toast.makeText(getApplicationContext(), "Permission Denied", Toast.LENGTH_LONG).show();
}
}
}
public void process() {
//...
}
}
启动应用程序时,它会立即显示“Permission Denied”-Toast,之前没有显示任何对话框。即使我在平板电脑的应用程序设置中手动授予存储权限,也会发生这种情况。
我的清单文件还包含在类似线程中建议的正确位置(应用程序标签之外)的权限。
我尝试重新安装应用程序,甚至已经重置了平板电脑,但似乎没有任何效果。
【问题讨论】:
标签: android android-6.0-marshmallow android-permissions