Eigenes Bild in email einfügen

  • Antworten:47
Lukas
  • Forum-Beiträge: 27

15.05.2015, 00:38:13 via Website

Hey Leute,
ich schreib gerade an ner app um ein eben gemachtes bild als eMail zu versenden.
könnte mir einer sagen wie das mit dem bild funktioniert?

Soweit bin ich.

Code:

enter code here

@Override
public void onClick(View v) {
String emailaddress[] = { emailAdresse };
String message = "Sehr geehrte Damen und Herren, "
+ text....;

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailaddress);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Bild";
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);

enter code here

Danke schonmal

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 13:44:18 via Website

Hey danke schonmal aber der benutzt n festen pfad zu nem bild ich will n eigenes aufnehmen.
Ich erklär kurz was ich gemacht hab:

Ich mach n Foto hier:
Code:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK){
Bundle extras = data.getExtras();
bmp = (Bitmap) extras.get("data");
image.setImageBitmap(bmp);
}
}

und das image würde ich jetzt gerne meinem Intent zufügen.

Code:

emailIntent.putExtra(Intent.EXTRA_STREAM, image);

aber dann kommt der Fehler:

Zitat:
The method putExtra(String, boolean) in the type Intent is not applicable for the arguments (String, ImageView)

Was kann ich machen?

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

15.05.2015, 14:15:11 via Website

Du übergibst, wie der Fehler schon sagt ein ImageView und kein Bild.
Wenn du das Image übergeben willst musst du bmp statt image nehmen, ob man ein Bitmap als Extra setzen kann weiß ich so nicht, kannst du aber ja ausprobieren.

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 16:44:58 via Website

Ne des geht leider nicht.
hast du ne ahnung wie ich dann das Bild das ich aufgenommen hab verwenden kann?
also umwandeln und so meinem Intent anfügen kann

grüße

Antworten
Sven R.
  • Forum-Beiträge: 1.904

15.05.2015, 17:39:05 via App

Temporär speichern und den Pfad übergeben, danach das Bild löschen.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 18:09:12 via Website

Kannst du mir zeigen wie?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 18:18:06 via Website

Das kommt darauf an wie du das Bild machst. Ich sende ein Intent an meine Kamera app, welche dann das Bild macht und mir den gespeicherten Pfad zurückgibt. Wenn es es genauso machst, dann kannst du ja einfach den Pfad verwenden den du im ActivityReult bekommst

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 18:35:41 via Website

Ich bin in die materie mit der Kamera nicht ganz eingedrungen. Ich hab nicht ganz verstanden wie das funktioniert.

also bislang ist es so das ich eine app habe mit 2 buttons und einigen Textviews.
Zuerst schreibt man in die Textviews etwas rein.
Button1 soll ein bild aufnehmen.
Button2 soll dann die eMail erstellen und das bild am ende hinzufügen.


Code:
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()){
case R.id.bSendeEmail:

        convertEditTextVarsIntoStringsAndYesThisIsAMethodWeCreated();
        String emailaddress[] = { emailAdresse };
        String message = "Hi Leute "
                + text

    //  emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    //  emailIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    //  startActivityForResult(emailIntent, cameraData);
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailaddress);
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Urlaubsbild" );
        emailIntent.setType("plain/text");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
    //  emailIntent.putExtra(Intent.EXTRA_STREAM,image);
        //emailIntent.setType("image");
        //emailIntent.putExtra(android.content.Intent.E
        startActivity(emailIntent);

        break;

    case R.id.bAddUnterschrift:
        emailIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(emailIntent, cameraData);
        break;

}

}


Wann genau die onActivityResult() aufgerufen wird versteh ich auch nicht vorallem weil das ImageView iv nie verwendet wird.
aber so hab ich das in einem turorial gesehen


Code:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK){
Bundle extras = data.getExtras();
bmp = (Bitmap) extras.get("data");
iv.setImageBitmap(bmp);
// image = (Uri) extras.get("data");
// Uri imageUri = Uri.writeToParcel(out, bmp);
}
}


Falls jmd einen weg kennt das ich an meine eMail ein bild (das ich in dem Moment mit meinem handy aufnahmen möchte) der eMail anhängt bitte ich um ein Beispiel bzw eine verbesserung meines Codes.

PS: ich hab das auskommentierte mal drinne gelassen vielleicht hilfts ja jmd

Danke Leute

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

15.05.2015, 18:44:51 via Website

Die onActivityResult startet, sobald das Foto geschossen wurde, bzw. die Kamera App wieder zu ist.
Da hast du jetzt dein Bitmap bmp geholt.

Mit

public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}

Kannst du jetzt versuchen daraus eine Uri zu machen. Die Funktion mit Uri bmpUri = getImageUri(this, bmp);o.ä. aufrufen.

Die Uri kannst du dann an deine Email anhängen

emailIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent1.putExtra(Intent.EXTRA_STREAM, bmpUri);
emailIntent1.setType("image/png");

Probiers mal aus.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 18:45:08 via Website

!. Die Activity Reult stimmt irgendwie nicht.

  1. um die Kamera App zu starten muss du das aufrufen,hast du ja soweit ausch schon:

    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    // request code

            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
    

CAMERA_PIC_REQUEST ist eine global definerte interger Konstante, da kannst du nehmen was du willst.

Und in der onActivityResult kannst du dann das machen:

 if( requestCode == CAMERA_PIC_REQUEST)
{
//  data.getExtras()
    Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
    ImageView image =(ImageView) findViewById(R.id.PhotoCaptured);
    image.setImageBitmap(thumbnail);
   Uri selectedImage = data.getData();
  String path =  getPath(selectedImage); //Dein Pfad zum Bild im Dateisystem
}

Jetzt brauchst du noch den pfad des bildes:

 public String getPath(Uri uri) 
    {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        if (cursor == null) return null;
        int column_index =             cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String s=cursor.getString(column_index);
        cursor.close();
        return s;
    }

Zum Nachlesen: http://stackoverflow.com/questions/3574313/using-intent-to-use-camera-in-android

LG

Edit: @Lars: Wenn man das so macht wie du hat man das Bild 2 mal gespeichert und man braucht File Write Permissions

— geändert am 15.05.2015, 18:46:08

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

15.05.2015, 18:50:54 via Website

Pascal P.

Edit: @Lars: Wenn man das so macht wie du hat man das Bild 2 mal gespeichert und man braucht File Write Permissions

Okay deins ist vermutlich besser (cool)

— geändert am 15.05.2015, 19:10:06

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 19:11:02 via Website

Ich bin gerade am versuchen das umzusetzen von Pascal. Pascal nach was sucht man bei dem Aufruf?
weil er bei mir unter R.id.PhotoCaptured (natürlich) so nix findet

iv =(ImageView) findViewById(R.id.PhotoCaptured);

Da m Lars seins nach m foto machen leider abgestürzt ist

— geändert am 15.05.2015, 19:12:46

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 19:27:15 via Website

Ja du musst erst wieder einen Button n der XML definieren und diesen dann in deine OnClick einbinden. In dieser kannst du dann dein KameraIntent starten.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 19:41:43 via Website

Kann ichs dir noch mal kurz alles aufzeigen was ich bisher habe?
Weil wenn ichs auf m handy teste brichts direkt nach m foto machen ab.

ich hab in meiner xml 1 TextView und 2 buttons
Bei klick auf button1 wird

emailIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(emailIntent, CAMERA_PIC_REQUEST);
        break;

ausgeführt und anschließend, dass womit du mir gerade geholfen hast

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if( requestCode == CAMERA_PIC_REQUEST)
    {
    data.getExtras();
       bmp = (Bitmap) data.getExtras().get("data");
        iv =(ImageView) findViewById(R.id.bAddBild);
        iv.setImageBitmap(bmp);


      image = data.getData();
      path =  getPath(image); //Dein Pfad zum Bild im Dateisystem
    }

public String getPath(Uri uri) 
{
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
    if (cursor == null) return null;
    int column_index =      cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String s=cursor.getString(column_index);
    cursor.close();
    return s;
}

R.id.bAddBild verweisst jetzt auf den button 1 (ist das richtig?)
Warum stürzt es ab?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 20:23:31 via Website

  1. Es ist richtig wenn dein Button in der xml die id BAddBild stehen hat.
  2. Das kann ch dir nciht sagen.
    Was sagt LogCat dazu?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 20:39:46 via Website

ich kann das programm nicht am rechner laufen lassen ich muss es immer aufs handy zeiehn muss irgendwie an der eMail funktion liegen

hm.... irgendwas muss es doch geben das es net abspürzt...

Antworten
Ju Ku
  • Forum-Beiträge: 72

15.05.2015, 20:43:26 via Website

Besitzt du denn ein ImageView in deiner layout file?
Mit startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST) startest du die Camera App, welche ein Bild macht und den Pfad dann zurück gibt.
Das Bild wird automatisch gespeichert und der Path ist in den Extras gespeichert.
Du benötigst dafür kein ImageView.
In der Android Documentation gibt es sogar ein Beispiel dazu.

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 20:50:49 via Website

ich hab in meiner xml 1 TextView und 2 buttons

es ist ein imageView drinnen unten rechts im bild aber das verwende ich zu keinem augenblick.
meinst du das ändert was?
ich möchte dass das gemachte bild nur und ausschließlich in der email angebracht wird

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 20:54:52 via Website

Macht kein Unterschied, lass es erstmal so sonst verwirrt es dich nur.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 21:01:28 via Website

und nun....
bevor es nicht weiter geht kann ich jmd meine xml und klasse schicken?
das er es kurz implementiert?
ist n sehr einfaches programm

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 21:04:55 via Website

Können schon, aber ich stelle dann den Sinn in Frage.
Was bringt dir schon fertiger Code den nur nur teilweise verstehst?
Du willst es ja lernen und das tut man nur mit reichlich übung.
Also Fragen beantworte ich gerne und helfe auch mit Snippets etc aus, aber den kompletten Code serviere ich dir nicht auf dem Sibertablett.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 21:12:36 via Website

Ich würde es gerne verstehen. aber im moment habe ich keine Ahnung warum es abstürzt.
Und ich bin mir sicher das ich ohne hilfe nicht weiter komme.
Falls du noch ne idee hast die ich versuchen kann bin ich sogar noch mehr dankbar.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 21:14:11 via Website

Pascal P.

  1. Es ist richtig wenn dein Button in der xml die id BAddBild stehen hat.
  2. Das kann ch dir nciht sagen.
    Was sagt LogCat dazu?

Hatte ich hier schonmal geschreiben.
Ich brauche den log um mehr sagen zu können

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 21:50:34 via Website

Meine Antwort hats net reingstellt na toll...

Jedenfalls hab ich mir n video zu dem LogCat angeschaut habs aber net verstanden.
Ich benutze immer den Debugger unde der geht bei eMails irgendwie nicht.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 21:53:20 via Website

Debugger und Logcat in eigener App funktioniert immer:
https://developer.android.com/tools/debugging/debugging-studio.html
http://stackoverflow.com/questions/3280051/how-to-enable-logcat-console-in-eclipse-for-android

Du musst nur das LogCat Fenster öffnen und die rot markierten Meldungen anschauen

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 21:56:21 via Website

Du meinst so?

05-15 19:43:01.355: E/AndroidRuntime(278): FATAL EXCEPTION: main
05-15 19:43:01.355: E/AndroidRuntime(278): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.urlaubsbilder/com.example.urlaubsbilder.Bilder}: java.lang.NullPointerException
05-15 19:43:01.355: E/AndroidRuntime(278): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-15 19:43:01.355: E/AndroidRuntime(278): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-15 19:43:01.355: E/AndroidRuntime(278): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-15 19:43:01.355: E/AndroidRuntime(278): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-15 19:43:01.355: E/AndroidRuntime(278): at android.os.Handler.dispatchMessage(Handler.java:99)
05-15 19:43:01.355: E/AndroidRuntime(278): at android.os.Looper.loop(Looper.java:123)
05-15 19:43:01.355: E/AndroidRuntime(278): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-15 19:43:01.355: E/AndroidRuntime(278): at java.lang.reflect.Method.invokeNative(Native Method)
05-15 19:43:01.355: E/AndroidRuntime(278): at java.lang.reflect.Method.invoke(Method.java:521)
05-15 19:43:01.355: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-15 19:43:01.355: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-15 19:43:01.355: E/AndroidRuntime(278): at dalvik.system.NativeStart.main(Native Method)
05-15 19:43:01.355: E/AndroidRuntime(278): Caused by: java.lang.NullPointerException
05-15 19:43:01.355: E/AndroidRuntime(278): at com.example.urlaubsbilder.Bilder.onCreate(Bilder.java:41)
05-15 19:43:01.355: E/AndroidRuntime(278): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-15 19:43:01.355: E/AndroidRuntime(278): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-15 19:43:01.355: E/AndroidRuntime(278): ... 11 more

— geändert am 15.05.2015, 21:56:42

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 22:00:47 via Website

05-15 20:00:09.966: E/AndroidRuntime(285): FATAL EXCEPTION: GLThread 11
05-15 20:00:09.966: E/AndroidRuntime(285): java.lang.IllegalArgumentException: No configs match configSpec
05-15 20:00:09.966: E/AndroidRuntime(285): at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:760)
05-15 20:00:09.966: E/AndroidRuntime(285): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916)
05-15 20:00:09.966: E/AndroidRuntime(285): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1246)
05-15 20:00:09.966: E/AndroidRuntime(285): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
05-15 20:00:09.976: W/ActivityManager(59): Force finishing activity com.android.camera/.Camera

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 22:02:00 via Website

Genau! :)

Der Fehler liegt hier:

Caused by: java.lang.NullPointerException
05-15 19:43:01.355: E/AndroidRuntime(278): at com.example.urlaubsbilder.Bilder.onCreate(Bilder.java:41)

Da ist irgend eine Variable nicht getetzt, was zu diesem Fehler führt. Was steht denn in Bilder.java Zeile 41?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 22:04:06 via Website

Zum 2. Log: Benutzt du einen Emulator?
Sieht ganz danach aus als könnte er auf die Kamera nicht zugreifen. Dafür musst du dein Handy nehmen und die App darauf laufen lassen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 22:04:36 via Website

Ich glaub die erste fehlermeldung können wir ignorieren hab das textview vergessen auszufüllen

ps: da steht
initialize();

private void initialize() {
    // TODO Auto-generated method stub
    personenEmail   =   (EditText)  findViewById(R.id.etEmailadresse);
    gedanken        =   (EditText)  findViewById(R.id.etGrund);

    bildMachen      =   (Button)    findViewById(R.id.bBildAufnehmen);
    sendeEmail      =   (Button)    findViewById(R.id.bSendeEmail);
}

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 22:06:05 via Website

jo das ist ja das problem das ich versucht hab zu sagen.
wenn ichs auf m Handy laufen lasse stürzt es nach dem bild machen ab.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 22:07:40 via Website

Dann Handy ins Debugmodus -> Per USB anschlißen und die App mit log und debugger auf dem Handy laufen lassen und dann den Fehler hier Posten

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 22:09:02 via Website

Manifest

<?xml version="1.0" encoding="utf-8"?>

package="com.example.urlaubsbilder"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
            <activity
        android:name=".Bilder"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.LukasMike.kuendigung.URLAUB" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

Bilder Klasse

package com.example.urlaubsbilder;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Images;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

public class Bilder extends Activity implements View.OnClickListener{

EditText personenEmail,  gedanken ;
String name;
String emailAdresse;
Button sendeEmail,bildMachen;
Intent emailIntent;
final static int cameraData=0;
Bitmap bmp;
Uri image;
ImageView iv;
int CAMERA_PIC_REQUEST =0;
String path ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initialize();
    sendeEmail.setOnClickListener(this);
    bildMachen.setOnClickListener(this);
}





private void initialize() {
    // TODO Auto-generated method stub
    personenEmail   =   (EditText)  findViewById(R.id.etEmailadresse);
    gedanken        =   (EditText)  findViewById(R.id.etGrund);

    bildMachen      =   (Button)    findViewById(R.id.bBildAufnehmen);
    sendeEmail      =   (Button)    findViewById(R.id.bSendeEmail);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()){
    case R.id.bSendeEmail:

        convertEditTextVarsIntoStringsAndYesThisIsAMethodWeCreated();
        String emailaddress[] = { emailAdresse };
        String message = "Sehr geehrte Damen und Herren, "
                + '\n'+ name;

    //  emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    //  emailIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    //  startActivityForResult(emailIntent, cameraData);
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailaddress);
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Kündigung meines Zeitschriftenvertrags" );
        emailIntent.setType("plain/text");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
        emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        emailIntent.putExtra(Intent.EXTRA_STREAM, image);
        emailIntent.setType(path);
    //  emailIntent.putExtra(Intent.EXTRA_STREAM,image);
        //emailIntent.setType("image");
        //emailIntent.putExtra(android.content.Intent.E
        startActivity(emailIntent);

        break;

    case R.id.bBildAufnehmen:
        emailIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(emailIntent, CAMERA_PIC_REQUEST);
        break;

}

}
private void convertEditTextVarsIntoStringsAndYesThisIsAMethodWeCreated() {
// TODO Auto-generated method stub
emailAdresse = personenEmail.getText().toString();
name = gedanken.getText().toString();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if( requestCode == CAMERA_PIC_REQUEST)
    {
        data.getExtras();
        bmp = (Bitmap) data.getExtras().get("data");
        iv =(ImageView) findViewById(R.id.bBildAufnehmen);
        iv.setImageBitmap(bmp);


      image = data.getData();
      path =  getPath(image); //Dein Pfad zum Bild im Dateisystem
    }
/*  if (resultCode==RESULT_OK){
        Bundle extras = data.getExtras();
        bmp = (Bitmap) extras.get("data");
        iv.setImageBitmap(bmp);

        image = getImageUri(this, bmp);
//      image = (Uri) extras.get("data");
//      Uri imageUri = Uri.writeToParcel(out, bmp);
    }*/
}

/* public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}*/
public String getPath(Uri uri)
{
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
if (cursor == null) return null;
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String s=cursor.getString(column_index);
cursor.close();
return s;
}

}

XML

<?xml version="1.0" encoding="utf-8"?>

android:orientation="vertical"
android:layout_width="match_parent"
android:weightSum="100"
android:layout_height="match_parent">

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="323dp" >

    <LinearLayout android:orientation="vertical"
        android:layout_width="match_parent" android:layout_height="match_parent">

        <TextView android:text="Die Emailadresse des Unternehmens:"
            android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

        <EditText android:layout_height="wrap_content"
            android:hint="E-Mail"
            android:layout_width="match_parent" android:id="@+id/etEmailadresse">
        </EditText>



        <TextView android:text="Urlaubsgedanken:"
            android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

        <EditText android:layout_height="wrap_content"
            android:hint="Dieser Text wird genauso übernommen wie Sie ihn eintippen"
            android:layout_width="match_parent" android:id="@+id/etGrund"></EditText>


    </LinearLayout>
</ScrollView>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_weight="60"
    android:orientation="vertical" >

    <Button
        android:id="@+id/bBildAufnehmen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="BildAufnehmen" />

    <Button
        android:id="@+id/bSendeEmail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Sende Email" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1.74"
        android:src="@drawable/ic_launcher" />
</LinearLayout>

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 22:09:44 via Website

Dann Handy ins Debugmodus -> Per USB anschlißen und die App mit log und debugger auf dem Handy laufen lassen und dann den Fehler hier Posten

noch nie gemacht aber ich versuchs

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 22:10:36 via Website

Ist aber noch nicht der Fehler der auftritt..

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

15.05.2015, 23:16:04 via Website

ich bekomms debuggen nicht hin...
ich machs wies in der anleitung.
eclipse SDK Manager dann Google US Drive installieren.

anschließend geräte manager dann treiber aktuallisieren

Pfad:
C:\Users\Lukas\android-sdks\extras\google

und dann kommt nur kann nicht aktuallisiert werden.
dadurch kann ich nicht
USB debugging zulassen

PS: ich hab in den settings schon alles richtig eingestellt ( Stay away und USB debugging) und meine app ausgewählt zum debugging hab ich auch

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.05.2015, 23:24:19 via Website

  1. falls du dir überlegst, noch eine App zu Programmieren nutze nicht Eclipse sondern Android Studio
  2. Nach welcher Anleitung??
  3. Zum debuggen auf deinem eigenen Handy brauchst du kein SDK Manager oder irgendwelches google zeugs

Du brauchst:
Ein Handy mit aktiviertem USB Debugging, ein usb Kabel, das adb Package (ist normalerweise im SDK mitdrnne) und ein wenug Zeit ;)

  1. Schließe das Handy an den PC an
  2. Sage in Eclipse Rn->Debug
  3. Es sollte eine Dialogbox zum auswählen des gerätes erschreinen, in der du dann dein Gerät auswählst. Ist das nicht der Fall dann wurde dein Handy nicht richtig erkannt bzw. die verbindung mit ADB funtioniert nicht.

  4. Die App wird automatisch aufs Handy geladen und gestartet. Titt dann irgend ein Fehler auf siehst du diesen Im Log und kannst den Fehler dann beseitigen bzw. hier Posten.

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

16.05.2015, 01:54:09 via Website

genau die dialogbox geht net auf.... und ich bekomm das adb net richtig installiert.
ich hab jetzt so n allround adb installiert und noch was anderes.... ich glaub ich versuchs morgen noch mal in aller ruhe....

oh man...

Antworten
Ju Ku
  • Forum-Beiträge: 72

16.05.2015, 11:41:35 via Website

Pascal P.

  1. falls du dir überlegst, noch eine App zu Programmieren nutze nicht Eclipse sondern Android Studio
  2. Nach welcher Anleitung??
  3. Zum debuggen auf deinem eigenen Handy brauchst du kein SDK Manager oder irgendwelches google zeugs

Du brauchst:
Ein Handy mit aktiviertem USB Debugging, ein usb Kabel, das adb Package (ist normalerweise im SDK mitdrnne) und ein wenug Zeit ;)

  1. Schließe das Handy an den PC an
  2. Sage in Eclipse Rn->Debug
  3. Es sollte eine Dialogbox zum auswählen des gerätes erschreinen, in der du dann dein Gerät auswählst. Ist das nicht der Fall dann wurde dein Handy nicht richtig erkannt bzw. die verbindung mit ADB funtioniert nicht.

  4. Die App wird automatisch aufs Handy geladen und gestartet. Titt dann irgend ein Fehler auf siehst du diesen Im Log und kannst den Fehler dann beseitigen bzw. hier Posten.

LG

Das mit dem Android Studio wollte ich auch gerade schreiben.
Google hat damals auf Eclipse gesetzt, mittlerweile setzen sie auf Android Studio, da dieses auf IntelliJ IDEA aufbaut und IntelliJ eine der intelligentesten IDEAs sein soll, sowie auch die beste Code Vervollständigung dafür bietet.
Aus diesem Grund bietet Android Studio mittlerweile auch viel mehr Tools und viele Sachen wie das SDK sind bereits vorinstalliert und bekommt evtl. sogar die Updates eher.
Du kannst mit dem Android Studio und dem Android Device Manager auch ein virtuelles Android erstellen, welches entweder die Camera emuliert oder die Camera von deinem Computer verwendet.
Dann brauchst du dein Handy nicht dafür verwenden.
Den Google USB Driver brauchst du vermutlich, damit Android Studio den Log aus dem Android Device auslesen kann, aber wenn du die Camera emulierst, benötigst du lediglich ADB, was bei Android Studio bereits vorinstalliert ist.

Antworten
Lukas
  • Forum-Beiträge: 27

16.05.2015, 20:29:22 via Website

Dann wechsel ich glaub nach der App.
Wenn Eclipse so schlecht ist :-)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

16.05.2015, 20:32:36 via Website

Schlecht nicht, es ist nur ratsam wenn man "gerade erst anfängt" gleich mit AndroidStudio anzufangen, da es auf lange scht auf jeden Fall besser ist.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

17.05.2015, 05:19:51 via Website

alles klar.

Aber auf mein problem zurück zu kommen. wenn ich des debugen net zum laufen bekomm kann mir keiner mehr helfen?

Das muss doch einer wissen :-)

Grüße

Antworten
Lukas
  • Forum-Beiträge: 27

17.05.2015, 21:51:04 via Website

05-17 21:52:12.550: E/AndroidRuntime(8027): FATAL EXCEPTION: main
05-17 21:52:12.550: E/AndroidRuntime(8027): java.lang.RuntimeException: Unable to resume activity {com.LukasMike.kuendigung/com.LukasMike.kuendigung.Kuendigung}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=0, data=null} to activity {com.LukasMike.kuendigung/com.LukasMike.kuendigung.Kuendigung}: java.lang.NullPointerException
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2124)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2139)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1672)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:2836)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.access$1600(ActivityThread.java:117)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.os.Looper.loop(Looper.java:130)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.main(ActivityThread.java:3691)
05-17 21:52:12.550: E/AndroidRuntime(8027): at java.lang.reflect.Method.invokeNative(Native Method)
05-17 21:52:12.550: E/AndroidRuntime(8027): at java.lang.reflect.Method.invoke(Method.java:507)
05-17 21:52:12.550: E/AndroidRuntime(8027): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
05-17 21:52:12.550: E/AndroidRuntime(8027): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
05-17 21:52:12.550: E/AndroidRuntime(8027): at dalvik.system.NativeStart.main(Native Method)
05-17 21:52:12.550: E/AndroidRuntime(8027): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=0, data=null} to activity {com.LukasMike.kuendigung/com.LukasMike.kuendigung.Kuendigung}: java.lang.NullPointerException
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.deliverResults(ActivityThread.java:2536)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2111)
05-17 21:52:12.550: E/AndroidRuntime(8027): ... 13 more
05-17 21:52:12.550: E/AndroidRuntime(8027): Caused by: java.lang.NullPointerException
05-17 21:52:12.550: E/AndroidRuntime(8027): at com.LukasMike.kuendigung.Kuendigung.onActivityResult(Kuendigung.java:117)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.Activity.dispatchActivityResult(Activity.java:3934)
05-17 21:52:12.550: E/AndroidRuntime(8027): at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
05-17 21:52:12.550: E/AndroidRuntime(8027): ... 14 more

Hilft das? Bitte sagt ja ;-)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

17.05.2015, 23:19:13 via App

Kuendigung.java Zeile 117 ist der Fehler.
Was steht denn da?
Es ist eine NullPointerExcepion also ist irgend eine Variable nicht gesetzt.

— geändert am 17.05.2015, 23:19:32

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas
  • Forum-Beiträge: 27

18.05.2015, 00:46:16 via Website

Hey!
Danke für die Mühe die Ihr euch gebt!
Also ich glaub es ist fast geschafft.
Es sieht jetzt so aus:

    emailIntent = new  Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(emailIntent, CAMERA_PIC_REQUEST);


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if( requestCode == CAMERA_PIC_REQUEST)
    {
    Bundle bun = data.getExtras();
    bmp = (Bitmap) bun.get("data");
    image = data.getData();
    path = Images.Media.insertImage(getContentResolver(), bmp, null, null);
    }

Bis hier scheint noch alles okay zu sein.

        emailIntent = new Intent(android.content.Intent.ACTION_SEND);
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailaddress);
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "textdwd");
        emailIntent.setType("plain/text");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
        emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        emailIntent.putExtra(Intent.EXTRA_STREAM, image);
        emailIntent.setType(path);
        startActivity(emailIntent);

Bei
startActivity(emailIntent);
stürzt es dann ab
vielleicht weil ich einmal

emailIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

und dann noch mal

emailIntent = new Intent(android.content.Intent.ACTION_SEND);

????

Antworten
Lukas
  • Forum-Beiträge: 27

18.05.2015, 00:52:06 via Website

05-18 00:51:53.035: E/AndroidRuntime(19535): FATAL EXCEPTION: main
05-18 00:51:53.035: E/AndroidRuntime(19535): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND flg=0x10000000 (has extras) }
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.app.Activity.startActivityForResult(Activity.java:2833)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.app.Activity.startActivity(Activity.java:2959)
05-18 00:51:53.035: E/AndroidRuntime(19535): at com.LukasMike.kuendigung.Kuendigung.onClick(Kuendigung.java:92)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.view.View.performClick(View.java:2538)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.view.View$PerformClick.run(View.java:9152)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.os.Handler.handleCallback(Handler.java:587)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.os.Handler.dispatchMessage(Handler.java:92)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.os.Looper.loop(Looper.java:130)
05-18 00:51:53.035: E/AndroidRuntime(19535): at android.app.ActivityThread.main(ActivityThread.java:3691)
05-18 00:51:53.035: E/AndroidRuntime(19535): at java.lang.reflect.Method.invokeNative(Native Method)
05-18 00:51:53.035: E/AndroidRuntime(19535): at java.lang.reflect.Method.invoke(Method.java:507)
05-18 00:51:53.035: E/AndroidRuntime(19535): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
05-18 00:51:53.035: E/AndroidRuntime(19535): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
05-18 00:51:53.035: E/AndroidRuntime(19535): at dalvik.system.NativeStart.main(Native Method)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.05.2015, 06:58:32 via App

Fang doch mal an den log selber zu Lesen. Es is eine ActvityNotFound exception in roidRuntime(19535): at com.LukasMike.kuendigung.Kuendigung.onClick(Kuendigung.java:92)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten