【问题标题】:File sharing to app - says FileNotFoundException文件共享到应用程序 - 说 FileNotFoundException
【发布时间】:2017-01-25 06:36:47
【问题描述】:

我尝试将带有以下代码的图像共享到 Slack 应用程序,但它显示“共享文件时出错。请重试。”请注意,我已经设置了sharingIntent.setType("image/*") 并且正在从缓存中获取图像。还是不能指出错误。感谢任何指导!

代码:

try {
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
                        String currentDateAndTime = sdf.format(new Date());
                        filename = "Epic_" + currentDateAndTime + ".jpg";
                        File file = new File(context.getCacheDir(), filename +  ".png");
                        FileOutputStream fos = new FileOutputStream(file);
                        bm.compress(Bitmap.CompressFormat.PNG, 100, fos);
                        fos.flush();
                        fos.close();
                        file.setReadable(true, false);
                        Intent sharingIntent = new Intent(Intent.ACTION_SEND);
                        sharingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
                        sharingIntent.setType("image/*");
                        context.startActivity(Intent.createChooser(sharingIntent, "Share Via"));
                        subscriber.onCompleted();
                    } catch (Exception e) {
                    }

Logcat:

E/null: java.io.FileNotFoundException: Attempting to access private files
                                         java.lang.IllegalArgumentException: java.io.FileNotFoundException: Attempting to access private files
                                             at com.Slack.persistence.fileupload.FilePartialUploadJob$Builder.uriFile(FilePartialUploadJob.java:107)
                                             at com.Slack.ui.UploadActivity$34.call(UploadActivity.java:1253)
                                             at com.Slack.ui.UploadActivity$34.call(UploadActivity.java:1240)
                                             at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)
                                             at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
                                             at rx.Observable.unsafeSubscribe(Observable.java:9861)
                                             at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
                                             at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:221)
                                             at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
                                             at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
                                             at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                             at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
                                             at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                             at java.lang.Thread.run(Thread.java:818)
                                          Caused by: java.io.FileNotFoundException: Attempting to access private files
                                             at com.Slack.persistence.fileupload.FilePartialUploadJob$Builder.uriFile(FilePartialUploadJob.java:107) 
                                             at com.Slack.ui.UploadActivity$34.call(UploadActivity.java:1253) 
                                             at com.Slack.ui.UploadActivity$34.call(UploadActivity.java:1240) 
                                             at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46) 
                                             at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35) 
                                             at rx.Observable.unsafeSubscribe(Observable.java:9861) 
                                             at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94) 
                                             at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:221) 
                                             at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) 
                                             at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
                                             at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                                             at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) 
                                             at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) 
                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                             at java.lang.Thread.run(Thread.java:818) 

【问题讨论】:

    标签: android file filenotfoundexception


    【解决方案1】:

    getCacheDir() 仅为您的应用程序提供私有内部存储器。所以其他应用程序无法访问。

    看起来您发布的 logcat 来自不同的应用程序,因为它明确指出此类私有文件无法访问。

    【讨论】:

    • 好的。所以你建议使用其他通用的缓存目录来存储,对吧?
    • 不常见。并不需要。但不是私人的。喜欢getExternalCacheDir()。其他应用程序可以访问那里。好吧,如果他们请求 READ_EXTERNAL_STORAGE 权限。并得到了它。
    • 看来我必须更多地阅读文档。非常感谢你的帮助。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多