清单中存在时未授予运行时权限(Android)[重复]
Posted
技术标签:
【中文标题】清单中存在时未授予运行时权限(Android)[重复]【英文标题】:RunTime Permission Not Granted When It Exists In Manifest(Android) [duplicate] 【发布时间】:2018-12-10 11:08:22 【问题描述】:我正在尝试将 csv 文件保存到我的手机中,而我的目标 SDK 级别为 26,因此我尝试在运行我的应用程序时检查运行时权限。即使我在清单文件中提供了必要的权限,在我的活动中检查此权限也会返回 false。我该如何解决这个问题?
清单文件的开始
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.something">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
活动相关部分如下
public void saveToExcel() throws IOException
String baseDir = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "AnalysisData.csv";
String filePath = baseDir + File.separator + fileName;
File file = new File(filePath);
CSVWriter writer = null;
String[] data = "Hold Time", "Down-Down Time", "Up-Down Time";
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED
&& ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED)
if (file.exists() && !file.isDirectory())
FileWriter mFileWriter = null;
mFileWriter = new FileWriter(filePath, true);
writer = new CSVWriter(mFileWriter);
Log.d(TAG, "saveToExcel: exist");
else
writer = new CSVWriter(new FileWriter(filePath));
Log.d(TAG, "saveToExcel:do not exist");
writer.writeNext(data);
writer.close();
else
Log.d(TAG, "saveToExcel: permission not granted");
【问题讨论】:
检查是不够的......您还应该询问权限 - 随时在 SO 上搜索类似问题或只是获取指南在官方 android 开发网站上 查看***.com/questions/33162152/… 【参考方案1】:从 Android 6 及更高版本,您需要询问运行时权限:https://developer.android.com/training/permissions/requesting
在您的情况下,您需要询问 WRITE_EXTERNAL_STORAGE
和 READ_EXTERNAL_STORAGE
的运行时权限
【讨论】:
以上是关于清单中存在时未授予运行时权限(Android)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
尝试获取 READ_PHONE_STATE 权限时未显示 Android 权限对话框
在用户授予接收推送通知的权限时未调用 didRegisterForRemoteNotificationsWithDeviceToken
通过 Spring security ldap 对用户进行身份验证时未授予任何权限错误
在Android中锁定屏幕时未调用BroadcastReceiver