0

下面是我的代码,但它不起作用,错误函数只调用

原生插件

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

请帮助解决这个问题

4

3 回答 3

0

希望 addJavascriptInterface() 可以帮助您从 javascript 调用原生 android 函数

前任:

本机代码:webview.addJavascriptInterface(this.Activity,"SomeKey");

Javascript:

在这里,您可以将本机函数称为

window.SomeKey.execute() //execute 是原生函数

于 2013-02-15T11:31:03.970 回答
0

最后我找到了最好的解决方案而不是插件。

http://docs.phonegap.com/en/2.0.0/cordova_notification_notification.md.html#notification.alert

于 2013-02-18T09:32:04.923 回答
0

我在今年早些时候创建了这个。我不太确定它是否仍然适用于当前的 Phonegap。这是我创建的一个插件,允许您创建一个 AlertList 并将用户的选择返回给您。

https://github.com/kidino/phonegap-alertdialoglist-plugin

Phonegap 的 Android AlertList 对话框示例

通常,您需要在 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>
于 2013-12-18T03:51:09.707 回答