Javascript Android-是否可以从PhoneGap包装的应用程序中激发本机意图
我正在Sencha Touch 2.0.1和PhoneGap上开发一个应用程序。Javascript Android-是否可以从PhoneGap包装的应用程序中激发本机意图,javascript,android,cordova,extjs,Javascript,Android,Cordova,Extjs,我正在Sencha Touch 2.0.1和PhoneGap上开发一个应用程序。 我需要捕捉Sencha Touch中的事件并将其传输到本机Android环境 i、 e:一些sencha触控按钮需要在点击时触发意图以启动另一项活动(非PhoneGap活动) 到目前为止,我已经找到了各种各样的例子,如和。但在我看来,这些都不适用于我的情况 我要么放弃PhoneGap,使用另一个包装器,要么以某种方式绕过这个问题。提前谢谢 看看这个,明确和隐含的意图部分(1.2,1.3): 然后查看WebInte
我需要捕捉Sencha Touch中的事件并将其传输到本机Android环境 i、 e:一些sencha触控按钮需要在点击时触发意图以启动另一项活动(非PhoneGap活动) 到目前为止,我已经找到了各种各样的例子,如和。但在我看来,这些都不适用于我的情况
我要么放弃PhoneGap,使用另一个包装器,要么以某种方式绕过这个问题。提前谢谢 看看这个,明确和隐含的意图部分(1.2,1.3): 然后查看WebIntent.java的源代码,特别是startActivity函数: 然后在调用startActivity时,将新的类名字符串传递到下面几行:
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
免责声明:代码粗略,未经测试。我认为您需要制作自己的phonegap插件,从执行方法内部启动本机活动 有一个ContactView插件,你应该可以用它来指导自己的写作 具体来说,这两种方法
@Override
public PluginResult execute(String action, JSONArray args, String callbackId) {
startContactActivity();
PluginResult mPlugin = new PluginResult(PluginResult.Status.NO_RESULT);
mPlugin.setKeepCallback(true);
this.callback = callbackId;
return mPlugin;
}
public void startContactActivity() {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
this.ctx.startActivityForResult((Plugin) this, intent, PICK_CONTACT);
}
你是说你需要听广播的意图吗?不,反过来说。我想从包装在PhoneGap中的内容广播意图。+1这是一个有用的链接
startActivity(obj.getString("action"), uri, type, className, extrasMap);
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');
}
);
@Override
public PluginResult execute(String action, JSONArray args, String callbackId) {
startContactActivity();
PluginResult mPlugin = new PluginResult(PluginResult.Status.NO_RESULT);
mPlugin.setKeepCallback(true);
this.callback = callbackId;
return mPlugin;
}
public void startContactActivity() {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
this.ctx.startActivityForResult((Plugin) this, intent, PICK_CONTACT);
}