Webview - Auflösung "mailto" Befehl

A

Androbek

Neues Mitglied
0
Hallo liebe Community,

habe folgendes Problem. Ich habe eine Html Datei, die nach Eingabe gewisser Formularfelder den mailto Link generiert.
Die Angaben sollen dann nach Auswahl des E-Mail Programms übernommen werden. Im Browser klappt die auch ohne Probleme.

Was stimmt an den folgenden Angaben nicht?
Ich muss dazu sagen, dass Java mich bisher nicht interessiert hat, was sich in der Zukunft sicherlich ändern wird.

Eclipse hat bei "startActivity(i);" gemeckert und danach automatisch 2 Zeilen hinzugefügt. Ich denke es hängt mit all dem irgendwie zusammen.

Vielen Dank


HelloWebViewClient.java
Code:
package com.email.view;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import android.content.Intent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class HelloWebViewClient extends WebViewClient {

    @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url) {         
         if (url.startsWith("mailto:")) {                    
            url = url.replaceFirst("mailto:", "");
                url = url.trim();
                try {
                url = URLDecoder.decode(url,"UTF-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
        int subjectStart = url.indexOf("subject=");
                int subjectStop = url.indexOf("&body=");
                String subject = url.substring(subjectStart,subjectStop);
                subject = subject.replace("subject=", "");
                String bod = url.substring(subjectStop);
                bod = bod.replace("&body=", "");
                Intent i = new Intent(Intent.ACTION_SEND);
                i.setType("test/plain");
                i.putExtra(Intent.EXTRA_SUBJECT,subject);               
                i.putExtra(Intent.EXTRA_TEXT, bod);
                startActivity(i);
                return true;

     } else { 
         view.loadUrl(url);
         return true;
         }
     }

    private void startActivity(Intent i) {
        // TODO Auto-generated method stub
        
    }


}
WebViewExample.java
Code:
package com.email.view;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class WebViewExample extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        WebView webView = (WebView) findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://xxxxxxxxxxxxxxxx/test.html");

        webView.setWebViewClient(new HelloWebViewClient());

    }
}
AndroidManifest.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.email.view"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".WebViewExample"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="5" />

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
 
Was kommt denn fuer ein Fehler? (logcat!)
Ansonsten der Type muss sicherlich Text/plain sein und nicht Test/plain
 
logcat
Code:
I/ActivityManager(   71): Starting: Intent { act=android.intent.action.MAIN cat=
[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.email.view/.We
bViewExample } from pid 372
W/WindowManager(   71): Failure taking screenshot for (230x143) to layer 21000
I/ActivityManager(   71): Start proc com.email.view for activity com.ema
il.view/.WebViewExample: pid=380 uid=10037 gids={3003}
D/AndroidRuntime(  372): Shutting down VM
I/AndroidRuntime(  372): NOTE: attach of thread 'Binder Thread #3' failed
D/dalvikvm(  372): GC_CONCURRENT freed 98K, 83% free 358K/2048K, paused 1ms+0ms
D/jdwp    (  372): adbd disconnected
D/TabletStatusBar(  122): lights on
D/dalvikvm(  380): GC_FOR_ALLOC freed 36K, 4% free 6311K/6531K, paused 74ms
I/dalvikvm-heap(  380): Grow heap (frag case) to 6.698MB for 513744-byte allocat
ion
D/dalvikvm(  380): GC_FOR_ALLOC freed <1K, 4% free 6812K/7047K, paused 61ms
D/dalvikvm(  380): GC_CONCURRENT freed <1K, 4% free 6812K/7047K, paused 7ms+6ms
V/TLINE   (  380): new: android.text.TextLine@406c91b8
W/webcore (  380): Not supported in this case.
I/ActivityManager(   71): Displayed com.email.view/.WebViewExample: +2s5
71ms (total +36s889ms)
I/ActivityManager(   71): Displayed com.android.launcher/com.android.launcher2.L
auncher: +36s891ms
D/dalvikvm(  145): GC_EXPLICIT freed 1105K, 8% free 14972K/16135K, paused 4ms+11
ms
W/asset   (  145): Asset path /data/app/com.email.view-2.apk is neither
a directory nor file (type=1).
W/PackageManager(  145): Failure retrieving resources forcom.email.view
W/asset   (  145): Asset path /data/app/com.email.view-2.apk is neither
a directory nor file (type=1).
W/PackageManager(  145): Failure retrieving resources forcom.email.view
W/asset   (  145): Asset path /data/app/com.email.view-2.apk is neither
a directory nor file (type=1).


Und das sobald man auf den Link klickt:
Code:
V/TLINE   (  636): new: android.text.TextLine@406ddef8
W/webcore (  636): Not supported in this case.
D/dalvikvm(  145): GC_EXPLICIT freed 5K, 17% free 14160K/17031K, paused 4ms+1096
ms
I/ActivityManager(   71): Displayed com.email.view/.WebViewExample: +2s8
71ms
D/dalvikvm(  145): GC_EXPLICIT freed <1K, 17% free 14162K/17031K, paused 4ms+4ms

D/AndroidRuntime(  636): Shutting down VM
W/dalvikvm(  636): threadid=1: thread exiting with uncaught exception (group=0x4
0014760)
E/AndroidRuntime(  636): FATAL EXCEPTION: main
E/AndroidRuntime(  636): java.lang.StringIndexOutOfBoundsException: start=-1 end
=-1 length=12
E/AndroidRuntime(  636):        at java.lang.String.startEndAndLength(String.jav
a:598)
E/AndroidRuntime(  636):        at java.lang.String.substring(String.java:1561)
E/AndroidRuntime(  636):        at com.email.view.HelloWebViewClient.sho
uldOverrideUrlLoading(HelloWebViewClient.java:24)
E/AndroidRuntime(  636):        at android.webkit.CallbackProxy.uiOverrideUrlLoa
ding(CallbackProxy.java:222)
E/AndroidRuntime(  636):        at android.webkit.CallbackProxy.handleMessage(Ca
llbackProxy.java:322)
E/AndroidRuntime(  636):        at android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime(  636):        at android.os.Looper.loop(Looper.java:132)
E/AndroidRuntime(  636):        at android.app.ActivityThread.main(ActivityThrea
d.java:4025)
E/AndroidRuntime(  636):        at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime(  636):        at java.lang.reflect.Method.invoke(Method.java:4
91)
E/AndroidRuntime(  636):        at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:841)
E/AndroidRuntime(  636):        at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:599)
E/AndroidRuntime(  636):        at dalvik.system.NativeStart.main(Native Method)

W/ActivityManager(   71):   Force finishing activity com.email.view/.Web
ViewExample
 
Zuletzt bearbeitet:
java.lang.StringIndexOutOfBoundsException: start=-1 end=-1 length=12

-> In Zeile 24 (ka welche von deinen das ist) -> da ist wohl eines von deinen "indexOf(...)" nicht richtig. Wenn der String nicht vorkommt gibt es den Wert "-1" und dementsprechend einen Fehler wenn du den String mit substring beschneidest. Entweder du debuggst das ganze mit Eclipse durch oder machst dir mal ein paar Debug-Ausgaben rein (z.B. System.out.println(url.toString)) in jede zweite, da wirst du den Fehler finden :)
 

Ähnliche Themen

C
Antworten
8
Aufrufe
1.124
swa00
swa00
K
Antworten
3
Aufrufe
1.167
Kapikalaani
K
H
Antworten
0
Aufrufe
932
HoustonWeHaveAProblem
H
Zurück
Oben Unten