如何在Yalantis Ucrop中提供资源URI

时间:2017-10-29 03:32:55

标签: java android uri

我从我的android资源文件夹和缓存中获取图像。

我的资产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)

1 个答案:

答案 0 :(得分:0)

尝试一下:

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

我遇到了同样的问题,并且现在可以正常工作。