B
BlupBlup
Ambitioniertes Mitglied
- 1
Hi,
in meiner Activity habe ich einen Button. Wenn dieser Button gedrückt wird,
dann wird die Methode startPictureCamera(View view) aufgerufen.
Diese startet über startActivityForResult die Kamera.
Nachdem der Benutzer ein Foto gemacht hat, wird wieder zur aufrufenden Activity gewechselt und die Methode onActivityResult aufgerufen.
In onActivityResult wollte ich mir den Pfad ausgeben lassen, wo das Foto
abgelegt wurde. Beim dem Aufruf von uri.getLastPathSegment() stürzt
mir allerdings die App ab mit der unten angegeben Fehlermeldung.
Worin liegt der Fehler?
10-16 16:18:37.107: E/AndroidRuntime(19472): FATAL EXCEPTION: main
10-16 16:18:37.107: E/AndroidRuntime(19472): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=4, result=-1, data=Intent { act=inline-data dat=file:///mnt/sdcard/Android/data/com.master/files/coolMINT/Bilder/Blau/Blau_1.jpg typ=image/jpeg (has extras) }} to activity {com.master/com.master.PhaseOne}: java.lang.NullPointerException
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.deliverResults(ActivityThread.java:3007)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3050)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.access$1100(ActivityThread.java:127)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1188)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.os.Handler.dispatchMessage(Handler.java:99)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.os.Looper.loop(Looper.java:137)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.main(ActivityThread.java:4448)
10-16 16:18:37.107: E/AndroidRuntime(19472): at java.lang.reflect.Method.invokeNative(Native Method)
10-16 16:18:37.107: E/AndroidRuntime(19472): at java.lang.reflect.Method.invoke(Method.java:511)
10-16 16:18:37.107: E/AndroidRuntime(19472): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
10-16 16:18:37.107: E/AndroidRuntime(19472): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
10-16 16:18:37.107: E/AndroidRuntime(19472): at dalvik.system.NativeStart.main(Native Method)
10-16 16:18:37.107: E/AndroidRuntime(19472): Caused by: java.lang.NullPointerException
10-16 16:18:37.107: E/AndroidRuntime(19472): at com.master.PhaseOne.onActivityResult(PhaseOne.java:374)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.Activity.dispatchActivityResult(Activity.java:4649)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.deliverResults(ActivityThread.java:3003)
10-16 16:18:37.107: E/AndroidRuntime(19472): ... 11 more
in meiner Activity habe ich einen Button. Wenn dieser Button gedrückt wird,
dann wird die Methode startPictureCamera(View view) aufgerufen.
Diese startet über startActivityForResult die Kamera.
Nachdem der Benutzer ein Foto gemacht hat, wird wieder zur aufrufenden Activity gewechselt und die Methode onActivityResult aufgerufen.
In onActivityResult wollte ich mir den Pfad ausgeben lassen, wo das Foto
abgelegt wurde. Beim dem Aufruf von uri.getLastPathSegment() stürzt
mir allerdings die App ab mit der unten angegeben Fehlermeldung.
Worin liegt der Fehler?
Code:
public void startPictureCamera(View view)
{
try
{
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
int numberOfPictureFiles = new File(this.getExternalFilesDir(null) + File.separator + "coolMINT" + File.separator + "Bilder" + File.separator + GroupColor.StringValueOf(StatusInfo.ACTUAL_GROUP_COLOR)).listFiles().length + new File(this.getExternalFilesDir(null) + File.separator + "coolMINT" + File.separator + "Bilder" + File.separator + GroupColor.StringValueOf(StatusInfo.ACTUAL_GROUP_COLOR) + File.separator + "Hidden_Files").listFiles().length;
File file = new File(this.getExternalFilesDir(null) + File.separator + "coolMINT" + File.separator + "Bilder" + File.separator + GroupColor.StringValueOf(StatusInfo.ACTUAL_GROUP_COLOR) + File.separator + GroupColor.StringValueOf(StatusInfo.ACTUAL_GROUP_COLOR) + "_" + numberOfPictureFiles + ".jpg");
Uri uri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
this.startActivityForResult(intent, Constants.RQC_PICTURE);
}
catch(ActivityNotFoundException e)
{
Toast toast = Toast.makeText(this, "Kein Zugriff auf Kamera möglich", Toast.LENGTH_SHORT);
toast.show();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == Constants.RQC_PICTURE)
{
Toast.makeText(this, "requestCode == Constants.RQC_PICTURE", Toast.LENGTH_SHORT).show();
if(resultCode == RESULT_OK)
{
Toast.makeText(this, "resultCode == RESULT_OK", Toast.LENGTH_SHORT).show();
Uri uri = (Uri)data.getExtras().get("result");
String filename = uri.getLastPathSegment();
Toast.makeText(this, filename + " gespeichert", Toast.LENGTH_SHORT).show();
}
}
}
10-16 16:18:37.107: E/AndroidRuntime(19472): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=4, result=-1, data=Intent { act=inline-data dat=file:///mnt/sdcard/Android/data/com.master/files/coolMINT/Bilder/Blau/Blau_1.jpg typ=image/jpeg (has extras) }} to activity {com.master/com.master.PhaseOne}: java.lang.NullPointerException
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.deliverResults(ActivityThread.java:3007)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3050)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.access$1100(ActivityThread.java:127)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1188)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.os.Handler.dispatchMessage(Handler.java:99)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.os.Looper.loop(Looper.java:137)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.main(ActivityThread.java:4448)
10-16 16:18:37.107: E/AndroidRuntime(19472): at java.lang.reflect.Method.invokeNative(Native Method)
10-16 16:18:37.107: E/AndroidRuntime(19472): at java.lang.reflect.Method.invoke(Method.java:511)
10-16 16:18:37.107: E/AndroidRuntime(19472): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
10-16 16:18:37.107: E/AndroidRuntime(19472): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
10-16 16:18:37.107: E/AndroidRuntime(19472): at dalvik.system.NativeStart.main(Native Method)
10-16 16:18:37.107: E/AndroidRuntime(19472): Caused by: java.lang.NullPointerException
10-16 16:18:37.107: E/AndroidRuntime(19472): at com.master.PhaseOne.onActivityResult(PhaseOne.java:374)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.Activity.dispatchActivityResult(Activity.java:4649)
10-16 16:18:37.107: E/AndroidRuntime(19472): at android.app.ActivityThread.deliverResults(ActivityThread.java:3003)
10-16 16:18:37.107: E/AndroidRuntime(19472): ... 11 more