EvaluateJavascript Использование Android WebView с уровнем API 18 - PullRequest
0 голосов
/ 09 мая 2019

Я долгое время разрабатывал приложение для Android для своего бизнеса, и оно работало нормально, используя веб-просмотр и перезванивая между нативными функциями.Если это уместно, вот точка входа Java для моего приложения:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.activity_main);

    myWebView = (WebView) findViewById(R.id.webview);
    final Context that = this;
    myWebView.addJavascriptInterface(new WebAppInterface(this, this), "Android");

    myWebView.setWebViewClient(new WebViewClient(){
        public void onPageFinished(WebView view, String url) {
            myWebView.evaluateJavascript("pageFinished()", null);
        }
    });

    pm = this.getPackageManager();

    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setAllowUniversalAccessFromFileURLs(true);
    webSettings.setDomStorageEnabled(true);
    WebView.setWebContentsDebuggingEnabled(true);

    Window window = getWindow();
    //window.setStatusBarColor(Color.parseColor("#3596d4"));

    myWebView.loadUrl("file:///android_asset/index.html");

    IntentFilter filter = new IntentFilter();
    filter.addCategory(Intent.CATEGORY_DEFAULT);
    filter.addAction(getResources().getString(R.string.activity_intent_filter_action));
    registerReceiver(myBroadcastReceiver, filter);

    mDetector = new GestureDetectorCompat(that, this);
    myWebView.setOnTouchListener(touchListener);
}

Теперь, когда я установил минимальную версию 18 в своем файле Gradle, некоторые строки были помечены Android Studio как «не поддерживаемые API».18 ', прежде всего мои myWebView.evaluateJavascript звонки, но также и некоторые другие вещи, такие как WebView.setWebContentsDebuggingEnabled.

Как я могу сделать evaluateJavascript в API 18?

Также в некоторых местах, когда я звоню evaluateJavascript, я ожидаю ответ, например:

    myWebView.evaluateJavascript("Back.go()", new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String canGoBack) {
            if (canGoBack.equals("false")) {
                moveTaskToBack(true);
            } else {
                // don't need to do anything, already called Back.go()
                // that means the javascript already handled navigation
            }
        }
    });

Это будет возможно с API 18?

1 Ответ

0 голосов
/ 09 мая 2019

Как я могу оценить JavaScript в API 18?

Используйте loadUrl("javascript:..."), where the ... `- ваш код JavaScript.

Будет ли это возможно с API 18?

Нет, извините. Самое близкое, чтобы ваш код JavaScript вызывал что-то на вашем WebAppInterface, которое вы вводили через addJavascriptInterface().

Обратите внимание, что в настоящее время только ~ 4% устройств Android, использующих Play Store, используют API уровня 18 или старше .

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