Функция плагина Cordova нуждается в AppContext, но всегда говорит, что «контекст не был инициализирован» - PullRequest
0 голосов
/ 23 января 2019

на основе моего заголовка, вот более подробная информация (я не могу поделиться информацией о платформе, которую я использую из-за NDA ...)

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

FRAMEWORK.initialize(ID, SECRET, SCOPE, URI, SANDBOX, context);

Данные, написанные заглавными буквами, безусловно верны, но для версии Android, в отличие от версии ios, которая работает нормально, требуется /" context "для правильной работы.

Я пытался передать контекст как «всегда» для Android / Cordova, но он всегда выдает исключение «свойство lateinit не было инициализировано».

Пробовал те, но ни одна не работала, всегда та же ошибка.

Context context = this.cordova.getContext();

Context context = this.cordova.getActivity();

Context context = cordova.getActivity();

Context context = cordova.getContext();

Context context = cordova.getContext().getApplicationContext();

Context context = webView.getContext().getApplicationContext();

Context context = webView.getContext();

Проблема: производитель официально не поддерживает приложения Cordova, поэтому они не могут мне помочь (правила компании, отлично .: /

Я дажеизменил файл «MainActivity» на

package com.xxx.bbb.development;

import android.os.Bundle;
import org.apache.cordova.*;
import android.content.Context;

public class MainActivity extends CordovaActivity
{
    private static Context context;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        Bundle extras = getIntent().getExtras();
        if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
            moveTaskToBack(true);
        }

        loadUrl(launchUrl);

        MainActivity.context = this.getApplicationContext();
    }

    public static Context getAppContext() {
        return MainActivity.context;
    }
}

, чтобы это соответствовало контексту.

У меня так далеко от идей, пожалуйста, есть ли у кого-нибудь подсказка / подсказка / что угодно для меня?

#

Aditionally, плагин .java код:

package com.xxx.bbb;

import android.util.Log;

import com.xxx.bbb.development.MainActivity;

import fw.de.framework.BuildConfig;
import fw.de.framework.FRAMEWORKapi;
import fw.de.framework.FRAMEWORKState;

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

import android.content.Context;

public class FrameworkBridge extends CordovaPlugin {

    public FRAMEWORKapi FRAMEWORK;
    public Context context;

    // Initialisation
    @Override
    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
        super.initialize(cordova, webView);

        FRAMEWORK = new FRAMEWORKapi();
    }

    @Override
    public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
// version
        if(action.equals("initialize")) {
            Log.e("++++ initialize", "execute");

            String client_id = args.getString(0);
            String client_secret = args.getString(1);
            String scope = args.getString(2);
            String redirect_URI = args.getString(3);
            Boolean use_Sandbox = args.getBoolean(4);

            Log.e("++++ getState", client_id);
            Log.e("++++ client_secret",client_secret);
            Log.e("++++ scope",scope);
            Log.e("++++ redirect_URI",redirect_URI);
            Log.e("++++ use_Sandbox", use_Sandbox.toString());

            context = MainActivity.getAppContext();

            try {
                FRAMEWORK.initialize(client_id, client_secret, scope, redirect_URI, use_Sandbox, context);

                Log.e("++++ cState", cState.toString());

                final PluginResult result = new PluginResult(PluginResult.Status.OK, "xxx" + cState.toString());
                result.setKeepCallback(true);
                callbackContext.sendPluginResult(result);

                Log.e("++++ initialize", "success");

                return true;
            } catch (Exception e) { // DAS HIER WIRD ZURÜCKGEGEBEN WENN ICH DIE FUNKTION AUFRUFE
                final PluginResult result = new PluginResult(PluginResult.Status.ERROR, e.getMessage());
                result.setKeepCallback(true);
                callbackContext.sendPluginResult(result);

                Log.e("++++ initialize", "errrrrrr");

                return false;
            }
        } else {
            final PluginResult result = new PluginResult(PluginResult.Status.ERROR);
            result.setKeepCallback(true);
            callbackContext.sendPluginResult(result);

            Log.e("++++ no action found", action);

            return false;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...