我正在尝试修改此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"));
}
}
}
答案 0 :(得分:1)
您需要应用程序中的上下文传递给intent。您可以使用cordova.getActivity()
来获取对上下文的引用,如下所示:
Context context = this.cordova.getActivity().getApplicationContext();
我怎么想出来的:我检查了CordovaPlugin的来源。在那里,我看到cordova
是一个公共界面,源中的以下评论显示了这种方式:
要在UI线程上运行,请使用:
cordova.getActivity()runOnUiThread(可运行);