これ、明示的および暗黙的なインテントセクション(1.2、1.3)を見てください:
http ://www.vogella.de/articles/AndroidIntent/article.html
次に、WebIntent.javaのソースコード、特にstartActivity関数を見てください:
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));
そして、ここでインテントコンストラクター(コンストラクターを検索):
http ://developer.android.com/reference/android/content/Intent.html
WebIntentは、Androidクラスを取得するIntentコンストラクターをサポートしていません。
ただし、関数を拡張して、明示的な意図で機能させることができます(以下のコードは迅速で汚く、テストされていません)。
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));
上記のexecute関数では、「引数の解析」セクションの新しいパラメーターも解析する必要があります
// 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;
次に、startActivityの呼び出しで新しいclassName文字列を数行下に渡します。
startActivity(obj.getString("action"), uri, type, className, extrasMap);
次に、次のようなものを使用して、クラス名でAndroidアクティビティを呼び出すことができるはずです。
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');
}
);
};
クラス名は次のようなものです:com.company.ActivityName
免責事項:大まかなコード、テストされていません。