Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android Nougat中的文件限制_Android - Fatal编程技术网

android Nougat中的文件限制

android Nougat中的文件限制,android,Android,我正在使用相机从画廊/拍摄中获取图像。然后,如果需要,我想调整图像的大小并将其保存到相同的位置。 为此,我使用以下代码: File file = new File(photoLocation); file.setWritable(true); try { if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManag

我正在使用相机从画廊/拍摄中获取图像。然后,如果需要,我想调整图像的大小并将其保存到相同的位置。 为此,我使用以下代码:

File file = new File(photoLocation);
file.setWritable(true);
try {
    if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManager.PERMISSION_GRANTED) {
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 50, fileOutputStream);
        fileOutputStream.flush();
        fileOutputStream.close();
    }else{
        requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
    }
可悲的是我

FileNotFound错误权限被拒绝

我在安卓4设备上尝试了相同的代码,它工作正常,所以我认为这是因为安卓7中的文件访问限制。 现在如何写入文件

还有错误:

W/System.err:java.io.FileNotFoundException: /存储/3061-6133/DCIM/Camera/20161213_081733.jpg权限被拒绝 12-22 23:55:00.269 28524-28736/com.hadas.yotam.manchworkers W/System.err:at java.io.FileOutputStream.openNative方法 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:at java.io.FileOutputStream.FileOutputStream.java:221 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: 位于java.io.FileOutputStream.FileOutputStream.java:169 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: 在 com.hadas.yotam.manchworkers.ProductActivity$BitmapGetter.doInBackgroundProductActivity.java:465 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:at com.hadas.yotam.manchworkers.ProductActivity$BitmapGetter.doInBackgroundProductActivity.java:410 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:at android.os.AsyncTask$2.callAsyncTask.java:304 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:at java.util.concurrent.FutureTask.runFutureTask.java:237 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: 在android.os.AsyncTask$SerialExecutor$1.runAsyncTask.java:243 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err: 在 java.util.concurrent.ThreadPoolExecutor.runWorkerThreadPoolExecutor.java:1133 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:at java.util.concurrent.ThreadPoolExecutor$Worker.runThreadPoolExecutor.java:607 12-22 23:55:00.270 28524-28736/com.hadas.yotam.manchworkers W/System.err:at java.lang.Thread.runThread.java:761

我使用StartActivityForResault打开gallery并拾取图像,然后使用data.getData获取url,并使用光标获取路径


去掉鼠标和光标以获取路径部分。使用ContentResolver、openInputStream和openOutputStream处理Uri标识的内容。例如,您的bitmap.compress调用将使用openOutputStream中的OutputStream。

文件具体指向哪里?您看,photoLocation的价值是什么?@Commonware my bad忘了添加错误,我编辑了错误位置位于错误第一行的帖子我不知道您是如何获得该路径/存储/3061-6133/DCIM/Camera/20161213_081733.jpg的。看起来是在可移动存储器上,我用StartActivityForResault打开图库并选择图像,然后,我使用data.getData来获取url,并使用光标来获取路径。我需要使用光标来获取路径,以便能够使用ExifInterface.BTW。我刚刚创建了一个新文件,而不是试图修改用户选择的文件。我确实使用了openOutPutSteam来写入此文件,因此感谢您的支持help@yotamhadas:我需要使用游标来获取路径,以便能够使用ExiFinInterface-如果您使用更好的ExiFinInterface,例如,则不需要。你正在使用的那个。对不起,我忘了按shift+enter,太棒了!我没有读过所有这些新的补丁,因为我还在学习基本的,但是它的库非常棒,谢谢分享!