#java #android
#java #Android
Вопрос:
Я хочу передать изображение, взятое из галереи моего телефона, в мой java-код через Android Uri. Потому что Java.Для ввода-вывода требуется файл или Java URL или Java InputStream, как я могу преобразовать Android Uri в InputStream?
Однако каждый раз я получаю исключение.
я попытался с помощью этого кода преобразовать imageUri моих данных изображения в inputStream
.Я могу заверить вас, что у imageUri
этого есть действительный контент, потому что я могу посмотреть картинку в imageView
. Также, возможно, если есть более простое преобразование в Java URL, у меня нет проблем с этим. Спасибо
InputStream myimage = this.getContentResolver().openInputStream(imageUri);
LoadImageApp Image = new LoadImageApp( myimage );```
//code that passes content to imageUri.It is working fine.
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode,resultCode,data);
if (resultCode == RESULT_OK amp;amp; requestCode == PICK_IMAGE){
imageUri = data.getData();
imageView.setImageURI(imageUri);
}
}
трассировка стека
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
at android.view.View.performClick(View.java:4819)
at android.view.View$PerformClick.run(View.java:20152)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5572)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
at android.view.View.performClick(View.java:4819)
at android.view.View$PerformClick.run(View.java:20152)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5572)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/imageio/ImageIO;
at com.example.lib.LoadImageApp.<init>(LoadImageApp.java:66)
at kostas.sgong.Main_Menu.onClickStart(Main_Menu.java:75)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
at android.view.View.performClick(View.java:4819)
at android.view.View$PerformClick.run(View.java:20152)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5572)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
Caused by: java.lang.ClassNotFoundException: Didn't find class "javax.imageio.ImageIO" on path: DexPathList[[zip file "/data/app/kostas.sgong-1/base.apk", zip file "/data/app/kostas.sgong-1/split_lib_dependencies_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_0_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_1_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_2_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_3_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_4_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_5_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_6_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_7_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_8_apk.apk", zip file "/data/app/kostas.sgong-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.example.lib.LoadImageApp.<init>(LoadImageApp.java:66)
at kostas.sgong.Main_Menu.onClickStart(Main_Menu.java:75)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
at android.view.View.performClick(View.java:4819)
at android.view.View$PerformClick.run(View.java:20152)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5572)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
Suppressed: java.lang.ClassNotFoundException: javax.imageio.ImageIO
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
Комментарии:
1. «Однако каждый раз, когда я получаю исключение» — отредактируйте свой вопрос и опубликуйте трассировку стека. Иначе мы не сможем вам помочь, так как понятия не имеем, что происходит не так. Кроме того, откуда
imageUri
берется?2. Извините, я новый разработчик. Публикуем сейчас.
Ответ №1:
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/imageio/ImageIO;
Вы пытаетесь использовать класс Java, который не существует в Android. Поскольку ваше приложение скомпилировано, это, вероятно, происходит из какой-либо используемой вами библиотеки, где эта библиотека не предназначена для использования на Android.
Комментарии:
1. Спасибо за ответ. Но даже если я добавлю LoadImageApp в модуль Java в Android Studio и настрою для запуска с JDK?
2. @Mathew: В Android нет этого класса. Вы не можете этого изменить.