从课堂开始Intent

时间:2014-11-10 18:34:17

标签: android facebook cordova plugins

我正在尝试修改此Cordova插件示例,因此我可以在我的应用程序中打开本机Facebook应用程序。

我可以从我的webview调用execute()。但是如何调用getOpenFacebookIntent()?

/**
 * This class echoes a string called from JavaScript.
 */
public class Echo extends CordovaPlugin
{
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException
    {
        if(action.equals("echo"))
        {
            String message = args.getString(0);
            this.echo(message, callbackContext);
            return true;
        }
        else if(action.equals("facebook"))
        {
            //call getOpenFacebookIntent here
        }
        return false;
    }

    private void echo(String message, CallbackContext callbackContext)
    {
        if (message != null && message.length() > 0) {
            callbackContext.success(message);
        }
        else
        {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }

    public static Intent getOpenFacebookIntent(Context context)
    {
        try
        {
            context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
            return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/20531316728"));
        }
        catch (Exception e)
        {
            return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/20531316728"));
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您需要应用程序中的上下文传递给intent。您可以使用cordova.getActivity()来获取对上下文的引用,如下所示:

Context context = this.cordova.getActivity().getApplicationContext();

我怎么想出来的:我检查了CordovaPlugin的来源。在那里,我看到cordova是一个公共界面,源中的以下评论显示了这种方式:

  

要在UI线程上运行,请使用:

     

cordova.getActivity()runOnUiThread(可运行);