Javascript 如何从PhoneGap调用Android活动
我是PhoneGap新手,我能够用PhoneGap实现基本应用程序,现在为了进一步增强它,我想将PhoneGap与Android活动连接起来,基本上我计划使用javascript函数调用startActivity()方法 我试过了 但我未能调用活动,导致强制关闭错误。Javascript 如何从PhoneGap调用Android活动,javascript,android,cordova,android-activity,Javascript,Android,Cordova,Android Activity,我是PhoneGap新手,我能够用PhoneGap实现基本应用程序,现在为了进一步增强它,我想将PhoneGap与Android活动连接起来,基本上我计划使用javascript函数调用startActivity()方法 我试过了 但我未能调用活动,导致强制关闭错误。 一定要帮我,等待答复 如果你不知道你到底想做什么,那就很难了,但是写一个插件可能是最好的选择。退房 这个插件可以按原样为您工作,也可以为您自己提供很好的指导。尝试创建插件,下面是一些插件示例在不使用任何插件的情况下调用任何Jav
一定要帮我,等待答复 如果你不知道你到底想做什么,那就很难了,但是写一个插件可能是最好的选择。退房
这个插件可以按原样为您工作,也可以为您自己提供很好的指导。尝试创建插件,下面是一些插件示例在不使用任何插件的情况下调用任何Java本机代码,如下所示
public void customFunctionCalled() {
Log.e("Custom Function Called", "Custom Function Called");
}
<script type="text/javascript">
function callNewActivity() {
window.MainActivity.customFunctionCalled();
}
</script>
遵循以下步骤
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init(); // Calling this is necessary to make this work
appView.addJavascriptInterface(this, "MainActivity");
/* "this" points the to the object of the current activity. "MainActivity" is used to refer "this" object in JavaScript as in Step 3. */
super.loadUrl("file:///android_asset/www/index.html");
}
public void customFunctionCalled() {
Log.e("Custom Function Called", "Custom Function Called");
}
<script type="text/javascript">
function callNewActivity() {
window.MainActivity.customFunctionCalled();
}
</script>
public void customFunctionCalled() {
Log.e("Custom Function Called", "Custom Function Called");
}
<script type="text/javascript">
function callNewActivity() {
window.MainActivity.customFunctionCalled();
}
</script>
函数callNewActivity(){
window.MainActivity.customFunctionCalled();
}
MainActivity
中调用customFunctionCalled()
测试环境
Eclipse-3.7.2
安卓2.2模拟器
PhoneGap-2.0.0
请在这里提供您的评论,以改进博客文章。
我尝试了您以前尝试过的方法,将phonegap更新到2.0.0版及以上,最好的方法是使用插件。这是资产文件夹中的js on phonegap。确保构造id为“nativecall”的div元素,并使用示例按钮进行检测。确保查看LogCat以检查错误消息
window.echo = function(str, callback) {
cordova.exec(callback, function(err) {
callback('Nothing to echo.');
}, "Echo", "echo", [str]);
};
var app = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
app.receivedEvent('deviceready');
},
// Update DOM on a Received Event
receivedEvent: function() {
var abiter = $('#nativecall').html();
$("#abutton").click(function () {
window.echo(abiter, function(echoValue) {
alert(echoValue = abiter); // should alert true.
});
});
}
};
app.initialize();
在src上添加服务名为“Echo”的新类方法
我用了很长时间。但是最近安卓4.2.2出现了一些问题。从web上了解到,它在sdk>=17的情况下工作正常。你能告诉我使用sdk>=17???@AvtarSingh Suchariya需要做哪些更改吗?为什么我遵循了你的教程,但我得到了:07-08 23:44:04.845:E/Web控制台(25296):未捕获类型错误:Object[Object Object Object]在file:///android_asset/www/js/index.js:31 为什么呢?我听说如果目标SDK为17或更多,则必须进行一些修改(我认为这是我的情况)。但我不知道那些是什么。你能帮帮我吗?@AtanuCSE-hy-man你知道如何使用sdk>=17的脚本了吗?你能告诉我怎么做吗?@AlexStanese不,因为我没有使用任何繁重的本机功能,我只是将我的目标SDK降低到16以使它暂时工作。@AtanuCSE我得到了它!!!只需在“public void customFunctionCalled(){”之前添加“@JavascriptInterface”