0

これまでJavaで開発したことがなく、phonegapプラグインを介してjavascriptを介してGoogle Navigationアプリを起動する方法を見つけようとしています.

phonegap の例の Java クラスを変更しようとしていますが、うまくいきません。これがクラスです。

アプリ名/src/PhoneNavigator.java

package com.phonegap.plugin.phoneNavigator;

import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Intent;
import android.net.Uri;

/**
 * This class echoes a string called from JavaScript.
 */
public class PhoneNavigator extends CordovaPlugin {
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("doNavigate")) {
            String message = args.getString(0); 
            this.doNavigate(message,callbackContext);
            return true;
        }
        return false;
    }

    private void doNavigate(String location, CallbackContext callbackContext) {
        if (location != null && location.length() > 0) { 
            callbackContext.success(location);
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=" + location)); 
            startActivity(i);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }

    private void startActivity(Intent i) {
        // TODO Auto-generated method stub

    }
}

そして、私は次のJavaScript関数を持っています

function doNavigate(str){

    str = encodeURIComponent(str);

    cordova.exec(function(winParam) { alert(winParam);}, function(error) { alert(error);}, "PhoneNavigator",
             "doNavigate", [str]);
}

アプリで JavaScript 関数を実行すると、「無効なアクション」というアラートが表示されます。私が見たすべての例では、「startActivity(i);」で終わります。私がそれをやろうとしたとき、Eclipseは私がその方法を利用できないと言った. 何が間違っているのかわかりません。

4

1 に答える 1

0

以下でそれを理解しました。

package com.phonegap.plugin.phoneNavigator;

import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Intent;
import android.net.Uri;

/**
 * This class echoes a string called from JavaScript.
 */
public class PhoneNavigator extends CordovaPlugin {
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("doNavigate")) {
            String message = args.getString(0); 
            this.doNavigate(message,callbackContext);
            return true;
        }
        return false;
    }

    private void doNavigate(String location, CallbackContext callbackContext) {
        if (location != null && location.length() > 0) { 
            callbackContext.success(location);
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=" + location)); 
            this.cordova.getActivity().startActivity(i);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }


}
于 2013-01-18T20:37:40.407 に答える