华为手机读写SD卡,加了权限创建文件还是报错,求指导。在线等

ijackson 2016-07-17 11:08:56
RT添加了权限,创建文件的时候还是报错,别的手机没有问题,现在手上的华为P9不行,具体如下:

添加的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

----------------------
代码如下:
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
file = new File(saveDir, "temp.jpg");
file.delete();
File dir = new File(saveDir);
if(!dir.exists()) {
dir.mkdirs();
}
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(ReportActivity.this, "照片创建失败!",
Toast.LENGTH_LONG).show();
return;
}
}
-------------------------
异常信息:
java.io.IOException: open failed: ENOENT (No such file or directory)
07-17 10:57:31.275 9327-9327/com.jackson.spdtreport W/System.err: at java.io.File.createNewFile(File.java:942)
...全文
4456 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzx12121 2017-07-19
  • 打赏
  • 举报
回复
怎么使用啊楼主
瓶子君i 2017-03-17
  • 打赏
  • 举报
回复
引用 1 楼 crash163 的回复:
华为P9是android 6.0 的== 在API23+以上也就是安卓6.0以上的,进行了权限管理 不止要在AndroidManifest.xml里面添加权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 还要在JAVA代码中运行时实时请求权限: // Storage Permissions private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; /** * Checks if the app has permission to write to device storage * If the app does not has permission then the user will be prompted to * grant permissions * @param activity */ public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
非常感谢,很有用;
Lucien0623 2016-12-26
  • 打赏
  • 举报
回复
但是我targetSdkVersion没有23+ 不是应该默认有这些权限的吗 不应该报错才对啊
神兽已失踪 2016-10-19
  • 打赏
  • 举报
回复
用这个方法之后应用会关闭,需要重新打开才可以.这可以解决吗
神兽已失踪 2016-10-19
  • 打赏
  • 举报
回复
引用 1 楼 crash163 的回复:
华为P9是android 6.0 的== 在API23+以上也就是安卓6.0以上的,进行了权限管理 不止要在AndroidManifest.xml里面添加权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 还要在JAVA代码中运行时实时请求权限: // Storage Permissions private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; /** * Checks if the app has permission to write to device storage * If the app does not has permission then the user will be prompted to * grant permissions * @param activity */ public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
现在我用的华为n8 使用这个方法之后会弹出一个提示 第一次禁止之后 再次打开就永远不好使了 只能重新安装. 这要怎么解决啊
c小旭 2016-10-11
  • 打赏
  • 举报
回复
引用 1 楼 crash163 的回复:
华为P9是android 6.0 的== 在API23+以上也就是安卓6.0以上的,进行了权限管理 不止要在AndroidManifest.xml里面添加权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 还要在JAVA代码中运行时实时请求权限: // Storage Permissions private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; /** * Checks if the app has permission to write to device storage * If the app does not has permission then the user will be prompted to * grant permissions * @param activity */ public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
非常感谢,找了半天这个问题,终于解决了。
a547694946 2016-07-21
  • 打赏
  • 举报
回复
引用 1 楼 crash163 的回复:
华为P9是android 6.0 的== 在API23+以上也就是安卓6.0以上的,进行了权限管理 不止要在AndroidManifest.xml里面添加权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 还要在JAVA代码中运行时实时请求权限: // Storage Permissions private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; /** * Checks if the app has permission to write to device storage * If the app does not has permission then the user will be prompted to * grant permissions * @param activity */ public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
解决了困扰很久的问题 非常感谢
网易云捕 2016-07-18
  • 打赏
  • 举报
回复
华为P9是android 6.0 的== 在API23+以上也就是安卓6.0以上的,进行了权限管理 不止要在AndroidManifest.xml里面添加权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 还要在JAVA代码中运行时实时请求权限: // Storage Permissions private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; /** * Checks if the app has permission to write to device storage * If the app does not has permission then the user will be prompted to * grant permissions * @param activity */ public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
ijackson 2016-07-18
  • 打赏
  • 举报
回复
太感谢楼上了,这个问题终于解决了,跪谢!

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧