我试图将一个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");
}
}
答案 0 :(得分:0)
从Android 6及更高版本开始,您需要询问运行时权限:https://developer.android.com/training/permissions/requesting
在您的情况下,您需要询问WRITE_EXTERNAL_STORAGE
和READ_EXTERNAL_STORAGE
的运行时权限