下面是我的代码,但它不起作用,错误功能只调用
原生插件
package com.gami.fre;
import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
import android.widget.Toast;
public class ConfirmBox extends Plugin {
public static final String NATIVE_ACTION_STRING="nativeAction";
public static final String SUCCESS_PARAMETER="success";
public Context context;
public int result=0;
@Override
public PluginResult execute(String action, JSONArray data, String callbackId)
{
Log.d("HelloPlugin", "PhoneGap/Cordova!");
//only perform the action if it is the one that should be invoked
if (NATIVE_ACTION_STRING.equals(action))
{
String resultType = null;
try {
resultType = data.getString(0);
}
catch (Exception ex) {
Log.d("HelloPlugin", ex.toString());
}
if (resultType.equals(SUCCESS_PARAMETER))
{
Log.d("hisu", resultType);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
// set title
//alertDialogBuilder.setTitle("Your Title");
// set dialog message
alertDialogBuilder
.setMessage("Are you sure want to Exit!")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int id)
{
//ConfirmBox.this.finish();
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int id)
{
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
return new PluginResult(PluginResult.Status.OK, result);
}
else
{
return new PluginResult(PluginResult.Status.ERROR, "Oops, Error :(");
}
}
return null;
}
}
致电差距
<script type="text/javascript" >
function callNativePlugin( returnSuccess )
{
Helo.callNativeFunction( nativePluginResultHandler, nativePluginErrorHandler, returnSuccess );
}
function nativePluginResultHandler (result)
{
//alert("SUCCESS: \r\n"+result );
}
function nativePluginErrorHandler (error)
{
alert("ERROR: \r\n"+error );
}
每次只调用错误函数;成功通话正在发生,但在第一行后立即跳过。即日志打印后,它从函数中跳过并显示错误:NULL
请帮助解决此问题
答案 0 :(得分:0)
希望,addJavascriptInterface()将帮助您从javascript调用本机android函数
例如:
原生代码: webview.addJavascriptInterface(this.Activity,“SomeKey”);
Javascript:
您可以在此处调用本机函数
window.SomeKey.execute() // execute是本机函数
答案 1 :(得分:0)
最后我找到了最好的解决方案,而不是插件。
http://docs.phonegap.com/en/2.0.0/cordova_notification_notification.md.html#notification.alert
答案 2 :(得分:0)
我今年早些时候创建了这个。我不太确定它是否仍适用于当前的Phonegap。这是我创建的一个插件,允许您创建一个AlertList并返回用户的选择。
https://github.com/kidino/phonegap-alertdialoglist-plugin
通常,您在Javascript中需要做的是创建一个数组。第一项将成为AlertList的标题。然后调用showlist()函数并将数组作为参数传递。查看repo中www文件夹中的示例。
<script>
var fruitlist = [
"The Fruit List Title", // this is the title
"Orange",
"Apple",
"Watermelon",
"Papaya",
"Banana",
"Pear"
];
function showlist(thelist) {
cordova.exec(
function(listitem) {
alert( "You selected "+ thelist[listitem] );
},
function(error) {
alert("Error Occured");
}, "AlertList", "alertlist", thelist );
}
</script>
在HTML中,您可以使用以下内容:
<h1><a href="javascript:showlist(fruitlist)">FRUITS</a></h1>