在PhoneGap中调用Android的Java代码
- android,java,phonegap,
- 2013-10-09 07:44:56
在使用PhoneGap开发WebApp 的时候,需要使用 javascript 调用 native 的代码的时候,比如调用Android 的 Java 代码,这时候就需要使用 Cordova Plugin 这个东西。
Cordova Plugin 的官方文档这么解释的:A Cordova plugin bridges a bit of functionality between the WebView powering a Cordova application and the native platform the Cordova application is running on.
在JavaScript 里调用的方法:
cordova.exec(function(winParam){},function(error){},"service",
"action",["firstArgument","secondArgument",42,
false]);
function(winParam){} 成功的回调方法
function(error){} 失败的回调方法
"service" 一个字符串,也就是Plugin的名字(name)
"action" 一个字符串,一个service 可以有多个action
[ .. ] 一个javascript 数组,会传递给 native 层。
(1)在Java里,新建一个类,
package com.phonegap.helloworld;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Intent;
import android.net.Uri;
public class IntentPlugin extends CordovaPlugin{
public boolean execute(String action , JSONArray args , CallbackContext callbackContext)throws JSONException{
if(action.equals("start")){
String url = args.getString(0);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "video/mp4");
cordova.startActivityForResult(this, intent, 1);
return true;
}
return false;
}
}
(2)在config.xml 文件里,加入
<feature name="IntentPlugin">
<param name="android-package" value="com.phonegap.helloworld.IntentPlugin">
</feature>
(3)在你需要调用的地方加入
cordova.exec(function(winParam){},function(error){},"IntentPlugin","start",[data.url]);
这样就可以简单的通过JavaScript 代码调用Android 的 Java 代码。
如果出现以下的错误,缺少cordova 这个对象。
D/CordovaWebViewClient(29868): onPageFinished(file:///android_asset/www/home.html#videoDetail)
D/CordovaActivity(29868): onMessage(onPageFinished,file:///android_asset/www/home.html#videoDetail)
D/CordovaLog(29868): file:///android_asset/www/js/home.js: Line 1381 : Uncaught ReferenceError: cordova is not defined
在 HTML 文件里加入下面代码
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="cordova_plugins.js"></script>
相关文章
- EOF -
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: 在PhoneGap中调用Android的Java代码
本文地址: https://binkery.com/archives/316.html