Android - Wie ausgeführt Absicht von JavaScript
Ich bin neu in Android und Java. Ich konstruierte ein app mit HTML/Javascript, funktioniert Super.
Ich jetzt brauchen, um eine Aktivität zu erstellen, startet der E-Mail-client, füllt Subjekt und Körper, und (der schwierige Teil) fügt eine Datei-Anlage. Ich habe nicht in der Lage, dies zu tun innerhalb des JavaScript, mailto:
wird nicht die Datei anzuhängen.
So brauche ich, um dies zu erreichen, die durch die Java und ausführen von JavaScript. Ich denke, dies kann geschehen, indem man addJavaScriptInterface
aber ich finde keine detaillierte Dokumentation oder Beispiele gehen aus der.
Wie könnte ich dies tun?
Hier ist was ich habe, so weit nach dem Lesen der Dokumentation:
2. update code:
MainActivity.java
public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setIntegerProperty( "splashscreen", R.drawable.splash );
super.loadUrl("file:///android_asset/www/index.html", 1000);
WebView mWebView;
mWebView = (WebView)findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JavaScriptInterface(), "Android");
}
}
JavaScriptInterface.java
public class JavaScriptInterface {
public void doEmail(){
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/html");
sendIntent.putExtra(android.content.Intent.EXTRA_TEXT,"test text");
sendIntent.putExtra(Intent.EXTRA_SUBJECT,"test subject");
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://test co.html"));
startActivity(Intent.createChooser(sendIntent, "Send email..."));
}
}
Dann würde ich mit Verweis auf die Absicht, durch JavaScript, durch die Verwendung von Android.doEmail().
Mit dem obigen code erhalte ich 2 Fehler in Eclipse
1. Die Methode startActivity(Vorsatz) ist nicht definiert für den Typ - JavaScriptInterface
2. webview kann nicht aufgelöst werden oder ist nicht ein Feld - MainActivity
Was mache ich falsch?
InformationsquelleAutor user899641 | 2011-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
und
MainActivity
. Würde ich den anderen Kram hier?public class MainActivity extends DroidGap { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setIntegerProperty( "splashscreen", R.drawable.splash ); super.loadUrl("file:///android_asset/www/index.html", 1000); } }
Sorry, ich weiß nicht, wie man den code ordentlich wie oben...
stackoverflow.com/questions/2727763/...
Ich aktualisiert meine Frage mit meinem aktuellen code. Bitte lassen Sie mich wissen, was Sie jetzt denken.
Ich bearbeitet meine ursprüngliche Antwort, um Sie für die 2. Runde von code. HTH!
InformationsquelleAutor adamcodes
Diese Dokumentation Ihnen genau sagt, wie es zu tun.
Wie es aussieht, gibt es drei wesentliche Schritte:
WebView
Sie verwenden.Ihre
JavaScriptInterface
Klasse sollte das nicht reichenActivity
. Es wird seine eigene Klasse, die einesend()
Methode. IhreActivity
Klasse sollte den zweiten Teil deines codessend()
Methode (dieWebView
Teil)ich bin Folgen Sie der gleichen Dokumentation, sondern toast-Nachricht kein Feuer, warum.
InformationsquelleAutor nicholas.hauschild
Mit
addJavaScriptInterface
erweitern den DOM im inneren eingebetteten browser und ermöglichen JS Zugriff auf ein Java-Objekt, das ist genau das, was Sie wollen.Gibt es zu viele Schritte zu skizzieren, die hier bereits dokumentiert. Diese link hat einen guten überblick.
InformationsquelleAutor Steve
Ich verwendet WebIntents von Boris Smus (http://smus.com/android-phonegap-plugins) und es funktioniert wie ein Charme. Sie können auch durchlesen, seinen code ein wenig besser zu verstehen den Ansatz nahm er mit plugins.
HINWEIS: Sie müssen aktualisieren Sie den code zur Verfügung gestellt, wie ist ein wenig (siehe Kommentare) und die plugin-Architektur hat sich ein wenig geändert.
InformationsquelleAutor bryanallott