Forum » Programiranje » [android] java.lang.RuntimeException
[android] java.lang.RuntimeException
![](https://static.slo-tech.com/stili/avatar_gray.gif)
piki12 ::
Dober večer vsem,
rad bi vpašal zakaj se mi naredi napaka ko z naslednjo kodo naložim recimo z dropboxa ali pa z nekega določenega placa, oz če slikam sliko mi javi za ta del napako. Če pa hočem naloadati sliko z galerije mi pa zadeva dela odlično. Sedaj me zanima zakaj, je ta del tako občutljiv..
Javi mi naslednjo napako
lp,
ppiki12
rad bi vpašal zakaj se mi naredi napaka ko z naslednjo kodo naložim recimo z dropboxa ali pa z nekega določenega placa, oz če slikam sliko mi javi za ta del napako. Če pa hočem naloadati sliko z galerije mi pa zadeva dela odlično. Sedaj me zanima zakaj, je ta del tako občutljiv..
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) return; switch (requestCode) { case PICK_FROM_CAMERA: this.picturePath = picturePath; Intent intent1 = new Intent(getBaseContext(), AndroidPaint.class); startActivity(intent1); break; case PICK_FROM_FILE: Uri selectedImage = data.getData(); String[] filePathColumn = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); this.picturePath = picturePath; cursor.close(); Intent intent = new Intent(getBaseContext(), AndroidPaint.class); startActivity(intent); // doCrop(); break; } }
Javi mi naslednjo napako
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3, result=-1, data=Intent { dat=file:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/app.png typ=image/png }} to activity {com.slikar.slika/slikar.Main.FirstPage}: java.lang.NullPointerException at android.app.ActivityThread.deliverResults(ActivityThread.java:3103) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3146) at android.app.ActivityThread.access$1100(ActivityThread.java:132) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1187) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4575) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at slikar.Main.FirstPage.onActivityResult(FirstPage.java:396) at android.app.Activity.dispatchActivityResult(Activity.java:4649) at android.app.ActivityThread.deliverResults(ActivityThread.java:3099) ... 11 more
lp,
ppiki12
![](https://static.slo-tech.com/stili/avatar_gray.gif)
MrStein ::
getContentResolver() vrne null.
Zakaj, pa bo kdo drugi vedel...
Zakaj, pa bo kdo drugi vedel...
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
![](https://static.slo-tech.com/stili/avatar_gray.gif)
piki12 ::
in zakaj pa to vrne, sedaj me zanima,..
Osebno nimam pojma ker enostavno mi ni jasno, pri navadni galeriji dela odlično, pri dropboxu pa pri pick from file pa ne..Sem pregledal na stacku že vse variante pa mi še ni jasno..
Osebno nimam pojma ker enostavno mi ni jasno, pri navadni galeriji dela odlično, pri dropboxu pa pri pick from file pa ne..Sem pregledal na stacku že vse variante pa mi še ni jasno..
![](https://static.slo-tech.com/stili/avatar_gray.gif)
MrStein ::
Za vsak primer tja dodaj kontrolo, če je res null, in če je izpiše kaj podatkov, vsaj toliko, da se potrdi, da je res null.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
![](https://static.slo-tech.com/stili/avatar.gif)
Mavrik ::
Če samo prebereš dokumentacijo klicev, ki jih delaš, boš takoj opazil kakšno ogromno neumnost počneš.
The truth is rarely pure and never simple.
![](https://static.slo-tech.com/stili/avatar.gif)
Mavrik ::
Razloži mi, kaj točno to dela oz. zakaj si to napisal:
String[] filePathColumn = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); this.picturePath = picturePath;
The truth is rarely pure and never simple.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
piki12 ::
rabim da path vun dobi ? Sem pa koperal z exampla ..na netu..
Zgodovina sprememb…
- spremenilo: piki12 ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
piki12 ::
Mah ne morš verjet zdej sem spremenu pa mi ne dela galerija ostalo pa dela:
/external/images/media/333: open failed: ENOENT
Problem pa je da te poti ne najde, pri ostalih dveh ko dobi celo pot pa najde :O..
Spremenjena koda
/external/images/media/333: open failed: ENOENT
Problem pa je da te poti ne najde, pri ostalih dveh ko dobi celo pot pa najde :O..
Spremenjena koda
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) return; switch (requestCode) { case PICK_FROM_CAMERA: Intent intent = new Intent(getBaseContext(), AndroidPaint.class); startActivity(intent); picturePath= mImageCaptureUri.getPath().toString() ; // doCrop(); break; case PICK_FROM_FILE: mImageCaptureUri = data.getData(); Intent intent1 = new Intent(getBaseContext(), AndroidPaint.class); startActivity(intent1); picturePath= mImageCaptureUri.getPath().toString(); // doCrop(); break; } }
![](https://static.slo-tech.com/stili/avatar_gray.gif)
piki12 ::
from dropbox: /mnt/sdcard/Android/data/com.dropbox.android/files/scratch/appSetpint.png
from galerija: /external/images/media/333
from camera:/mnt/sdcard/tmp_avatar_1382875588475.jpg
from pick from file /sdcard/DCIM/Camera/IMG_20131015_103458.jpg
Pobral sem z vseh 4 primerov sedaj ne vem kaj je narobe tole no :( samo galerija ne dela, ker dobim res čudn link ampak ne vem zakaj, ma kdo idejo kaj je narobe ..
from galerija: /external/images/media/333
from camera:/mnt/sdcard/tmp_avatar_1382875588475.jpg
from pick from file /sdcard/DCIM/Camera/IMG_20131015_103458.jpg
Pobral sem z vseh 4 primerov sedaj ne vem kaj je narobe tole no :( samo galerija ne dela, ker dobim res čudn link ampak ne vem zakaj, ma kdo idejo kaj je narobe ..
![](https://static.slo-tech.com/stili/avatar.gif)
Mavrik ::
Ja, dobiš URI ki kaže na Content provider in ne datoteko.
No, vidim da si končno pogruntal da iskanje poti do datoteke v Dropboxu v sistemski galeriji ni pametno ;)
ENOENT dobiš če probaš pisati v datoteko, ki ni tvoja. Če misliš pisati v datoteke, potem jasno ne moreš tega delati direkt v datoteko iz druge aplikacije.
Anyway, kar ti dela probleme je tole:
Uri je samo naslov, ki ni nujno pot do datoteke. Druga aplikacija ti lahko da karkoli, dokler se da naslov razreši v veljavno vsebino na napravi. Zato zunanjo vsebino odpiraš s ContentResolverjem, ki poskrbi, da dobiš z Urija veljaven InputStream.
Torej sliko naložiš z Urija takole:
Jasno lahko tule uporabiš še več opcij, oz. če rabiš vsebino kot datoteko, jo pač skopiraš v datoteko z InputStreama v svoj cache direktorij.
No, vidim da si končno pogruntal da iskanje poti do datoteke v Dropboxu v sistemski galeriji ni pametno ;)
ENOENT dobiš če probaš pisati v datoteko, ki ni tvoja. Če misliš pisati v datoteke, potem jasno ne moreš tega delati direkt v datoteko iz druge aplikacije.
Anyway, kar ti dela probleme je tole:
Uri je samo naslov, ki ni nujno pot do datoteke. Druga aplikacija ti lahko da karkoli, dokler se da naslov razreši v veljavno vsebino na napravi. Zato zunanjo vsebino odpiraš s ContentResolverjem, ki poskrbi, da dobiš z Urija veljaven InputStream.
Torej sliko naložiš z Urija takole:
InputStream imageInputStream = getContentResolver().openInputStream(uri); Bitmap image = BitmapFactory.decodeStream(imageInputStream); imageInputStream.close();
Jasno lahko tule uporabiš še več opcij, oz. če rabiš vsebino kot datoteko, jo pač skopiraš v datoteko z InputStreama v svoj cache direktorij.
The truth is rarely pure and never simple.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Android] Bluetooth aplikacijaOddelek: Programiranje | 1110 (973) | marjan_h |
» | [Android] SplošnoOddelek: Programiranje | 2028 (1158) | piki12 |
» | android črtaOddelek: Programiranje | 2433 (1704) | g333kk |
» | [android] vstavljanje slikeOddelek: Programiranje | 1265 (1162) | messi |
» | [android] crashOddelek: Programiranje | 1357 (1166) | messi |