PhoneGap Android插件 - 关闭插件活动

时间:2014-02-18 15:56:03

标签: android cordova cordova-plugins

我已经写了一个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应用程序 - 我该怎么做?

我希望有人可以帮助我。谢谢你的所有答案。

1 个答案:

答案 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;
    }
}

希望这就是你要找的东西。