我已经写了一个PhoneGap Android插件,然后我开了第二个活动:
cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Context context = cordova.getActivity().getApplicationContext();
Intent intent = new Intent(context, secondActivity.class);
cordova.getActivity().startActivity(intent);
}
});
现在我想用按钮关闭活动并将插件结果发送到JavaScript,但我无法关闭活动并返回PhoneGap应用程序 - 我该怎么做?
我希望有人可以帮助我。谢谢你的所有答案。
答案 0 :(得分:6)
在你的插件中,使用来自CordovaInterface类的startActivityForResult
而不是来自Android的startActivity
:
this.cordova.startActivityForResult(this,intent,0);
(0是用于标识已启动活动的int值,如果需要启动多个活动,请使用其他数字)
在您的活动中,您添加以下函数以将结果返回到插件:
public void returnResult(int code, String result) {
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(code, returnIntent);
finish();
}
因此,当您想要退出活动时,可以使用RESULT_CANCELED或RESULT_OK以及表示要返回的内容的字符串来调用此函数。
最后在你的插件类中,添加以下函数:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case 0: //integer matching the integer suplied when starting the activity
if(resultCode == android.app.Activity.RESULT_OK){
//in case of success return the string to javascript
String result=intent.getStringExtra("result");
this.callbackContext.success(result);
}
else{
//code launched in case of error
String message=intent.getStringExtra("result");
this.callbackContext.error(message);
}
break;
default:
break;
}
}
希望这就是你要找的东西。