java - 如何在 Yalantis Ucrop 中提供 Assets URI

标签 java android uri

我正在从我的 Android Assets 文件夹和缓存中获取图像。

我的 Assets URI//assets/initial/initialone.jpg,而我的画廊URI/data/user/0/packagename/image/image.jpg.

我无法将这些 URI 提供给 Ucrop android 库。

以下是我到目前为止所做的事情:

File cachePath=new Flie(getCacheDir(),"images")
if(!cachePath.exists())
cachePath.mkdirs();
FileOutputStream fos=new FileOutputStream(cachePath+"/image.jpg");
myImageBitmap.compress(Bitmap.CompressFormat.JPEG,80,fos);
fos.close();
Uri source=Uri.parse(cachePath+"/image.jpg");
Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped"));
UCrop.of(source,destination).start(this);

如果我给出此 Uris,则会收到以下错误:

 java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                                                at android.os.AsyncTask$3.done(AsyncTask.java:309)
                                                                                at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                                                at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                                                at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                                at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
                                                                                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                at java.lang.Thread.run(Thread.java:818)
                                                                             Caused by: java.lang.IllegalArgumentException: Invalid Uri schemenull
                                                                                at com.yalantis.ucrop.task.BitmapLoadTask.processInputUri(BitmapLoadTask.java:184)
                                                                                at com.yalantis.ucrop.task.BitmapLoadTask.doInBackground(BitmapLoadTask.java:90)
                                                                                at com.yalantis.ucrop.task.BitmapLoadTask.doInBackground(BitmapLoadTask.java:41)
                                                                                at android.os.AsyncTask$2.call(AsyncTask.java:295)
                                                                                at java.util.concurrent.FutureTask.run(FutureTask.java:237)

最佳答案

试试这个:

Uri url=Uri.fromFile(new File(("yourImagePath")));

我遇到了同样的问题,现在已经解决了。

关于java - 如何在 Yalantis Ucrop 中提供 Assets URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996601/

相关文章:

java - 如何从另一个 Activity 重新排列 MainActivity 中的 ArrayList

android - 在 try-catch block 中显示 toast

android - Android 中的 transform.TransformException

c# - 为什么 Uri 对于不同的方案表现不同?

ios - Google+ iOS 应用程序的 URI 方案?

java - 注册和使用自定义 java.net.URL 协议(protocol)

java - REST JAX-RS 日志记录

java - 我如何相对引用 Eclipse 中的库?

java - 在 Java 中可视化复数

java - 验证/输入 GPS 坐标