2013-03-22 1 views
0

Я новичок в телефоне и Android.Phonegap plugin can not call native функция android

Я создал плагин в phonegap и android, чтобы вызвать функцию native, используя javascrip.

Мой куд, как показано ниже.

плагин/BannerLink.js

var BannerLink = { 

    callNativeFunction: function (success, fail, resultType) { 
     //alert(resultType); 
     return Cordova.exec(success, fail, 
        "org.apache.cordova.example.BannerLink", 
        "nativeFunction", 
        [resultType]); 

        alert(resultType); 
    } 
}; 

мой взгляд HTML файл

function bannerPressed(link){ 
    alert(link.rel); 
    //window.location.href=link.rel; 
    //window.open(link.rel); 
    BannerLink.callNativeFunction(nativePluginResultHandler,nativePluginErrorHandler,link.rel); 
} 
function nativePluginResultHandler (result) { 
    alert("SUCCESS: \r\n"+result); 
} 

function nativePluginErrorHandler (error) { 
    alert("ERROR: \r\n"+error); 
} 

Мой BannerLink.java файл

package org.apache.cordova.example; 

import org.apache.cordova.api.Plugin; 
import org.apache.cordova.api.PluginResult; 
import org.json.JSONArray; 

import android.app.AlertDialog; 
import android.util.Log; 

@SuppressWarnings("deprecation") 
public class BannerLink extends Plugin { 

    @Override 
    public PluginResult execute(String action, JSONArray args, String callbackId) { 
     // TODO Auto-generated method stub 

     AlertDialog alertDialog=new AlertDialog.Builder(null).create(); 
     alertDialog.setTitle("Reset..."); 
     alertDialog.show(); 
     Log.d("HelloPlugin", "Hello, this is a native function called from PhoneGap/Cordova!"); 
     //only perform the action if it is the one that should be invoked 
     return new PluginResult(PluginResult.Status.ERROR); 
    } 

} 

Мой config.xml файл

<plugin name="BannerLink" value="org.apache.cordova.example.BannerLink"/> 

Я использую phonegap 2.0

Пожалуйста, исправьте меня, где я совершил ошибку.

ответ

1

Есть несколько ошибок, которые вы используете JS. «Cordova» в нижнем регистре не в верхнем регистре, и вам просто нужно указать имя плагина не полный путь в ехес метод:

var BannerLink = { 
    callNativeFunction: function (success, fail, resultType) { 
     return cordova.exec(success, fail, 
        "BannerLink", 
        "nativeFunction", 
        [resultType]); 
    } 
}; 

В AlertDialog вы пытаетесь показать в коде Java должен быть обернут в например:

Runnable runnable = new Runnable() { 
     public void run() { 

      AlertDialog alertDialog=new AlertDialog.Builder(null).create(); 
      alertDialog.setTitle("Reset..."); 
      alertDialog.show(); 
     }; 
    }; 
    this.cordova.getActivity().runOnUiThread(runnable); 

 Смежные вопросы

  • Нет связанных вопросов^_^