bei dieser Werfen Sie einen Blick, die expliziten und impliziten Absicht Abschnitte (1.2, 1.3): http://www.vogella.de/articles/AndroidIntent/article.html
für WebIntent.java, einen Blick auf den Quellcode nehmen Sie dann die startActivity Funktion insbesondere: https://github.com/phonegap/phonegap-plugins/blob/master/Android/WebIntent/WebIntent.java
void startActivity(String action, Uri uri, String type, Map<String, String> extras) {
Intent i = (uri != null ? new Intent(action, uri) : new Intent(action));
Und dann die Absicht Konstrukteure hier (Suche nach Konstrukteurs): http://developer.android.com/reference/android/content/Intent.html
WebIntent unterstützt nicht den Intent-Konstruktor, der eine Android-Klasse benötigt.
Aber Sie können die Funktion erweitern, um es mit einer expliziten Absicht zu haben zu arbeiten (Code unten ist schnell und schmutzig und ungetestet):
void startActivity(String action, Uri uri, String type, String className, Map<String, String> extras) {
Intent i;
if (uri != null)
i = new Intent(action, uri)
else if (className != null)
i = new Intent(this.ctx, Class.forName(className));
else
new Intent(action));
Oben, in der Funktion auszuführen, müssen Sie auch die neue parsen Parameter in dem "die Argumente Parsen" -Abschnitt
// Parse the arguments
JSONObject obj = args.getJSONObject(0);
String type = obj.has("type") ? obj.getString("type") : null;
Uri uri = obj.has("url") ? Uri.parse(obj.getString("url")) : null;
String className = obj.has("className") ? obj.getString("className") : null;
JSONObject extras = obj.has("extras") ? obj.getJSONObject("extras") : null;
und dann den neuen Klassennamen String im Aufruf von startActivity einige Zeilen unten passieren:
startActivity(obj.getString("action"), uri, type, className, extrasMap);
Dann sollten Sie in der Lage sein, eine Android-Aktivität von Klassennamen zu nennen, mit so etwas wie:
Android.callByClassName = function(className) {
var extras = {};
extras[WebIntent.EXTRA_CUSTOM] = "my_custom";
extras[WebIntent.EXTRA_CUSTOM2] = "my_custom2";
window.plugins.webintent.startActivity({
className: className,
extras: extras
},
function() {},
function() {
alert('Failed to send call class by classname');
}
);
};
Wo der Klassenname ist so etwas wie: com.company.ActivityName
HAFTUNGSAUSSCHLUSS: Raue Code, nicht getestet.
sagen Sie Sie für Intents hören müssen, die übertragen wurden? –
Nein, andersherum. Ich möchte Absichten aus dem, was in PhoneGap verpackt ist, übertragen. – Mitraidos