Cordova - Использование переменных плагина в коде Java - PullRequest
0 голосов
/ 07 мая 2019

Я делаю плагин Cordova, который будет установлен следующим образом:

cordova plugin add myplugin --variable NAME="My awesome plugin"

Можно ли получить значение переменной NAME в коде Java моего плагина, чтобы что-то с ним сделать? Как? Моя цель - пропустить apikey через переменную при установке плагина в Ionic, а затем сделать что-то с заданным значением в моем плагине.

Как я могу напечатать его в этом коде, например?

package ionic.indoor.geolocation;

import android.IndoorGeolocationActivity;
import android.content.Intent;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONException;

public class IndoorGeolocationPlugin extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        try {
            actionExecutor(action, args);
            //callbackContext.success("Indoor geolocation launched!");
        } catch (Exception e) {
            //callbackContext.error(e.getLocalizedMessage());
        }

        return true;
    }

    private void actionExecutor(String action, JSONArray args) throws Exception {
        if ("start".equals(action)) {
            JSONObject jsonObject = new JSONObject(args.getString(0));
            String poi = jsonObject.getString("poi");
            String email = jsonObject.getString("email");
            String apikey = jsonObject.getString("apikey");

            cordova.getThreadPool().execute(new Runnable() {
                @Override
                public void run() {
                    start(poi, email, apikey);
                }
            });
        } else if("finish".equals(action)) {
            cordova.getThreadPool().execute(new Runnable() {
                @Override
                public void run() {
                    finish();
                }
            });
        } else {
            throw new IllegalStateException("Unknown action: " + action);
        }
    }

    private void start(String poi, String email, String apikey) {
        Intent intent = new Intent(cordova.getActivity(), IndoorGeolocationActivity.class);
        intent.putExtra(IndoorGeolocationActivity.EMAIL, email);
        intent.putExtra(IndoorGeolocationActivity.APIKEY, apikey);
        if (poi != null && poi.length() > 0) {
            intent.putExtra(IndoorGeolocationActivity.POI, poi);
        }

        cordova.getActivity().startActivity(intent);
        cordova.getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    }

    private void finish() {
        cordova.getActivity().finish();
    }
}

Спасибо!

...