Бюджет: по договоренности
Заходим в программу, кликаем на инпут – появляется клавиатура. Нажимаем "Назад" – клавиатура скрывается и срабатывает функция run(). Это нормально. Но если мы нажимаем "Домой" или кнопку питания или у нас входящий звонок – тоже срабатывает run() – это нужно исключить. Думаю нужно поставить дополнительное условие – "Если активити не активна – функция run() не срабатывает" Перечисление событий звонка, нажатия кнопок не допустимо.

Код активити:

package com.comname.reminder_4_4;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.inputmethod.InputMethodManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

import java.io.IOException;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WebView vw = (WebView) findViewById(R.id.webView);
        vw.getSettings().setJavaScriptEnabled(true);  // включили JavaScript
        vw.loadUrl("file:///android_asset/index.html");

        final View activityRootView = findViewById(R.id.webView); // получаем ID лайота (нужно указать)
        activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { // ставим "прослушку" на лайот
            private int lastHeight;// предыдущее значение высоты

            @Override
            public void onGlobalLayout() {
                if (lastHeight == 0) { // если не определено, то определить (1-ый вызов метода)
                    lastHeight = activityRootView.getHeight();
                }
                // проверка на то, что предыдущее значение меньше текущего
                // если разница более 100, то значит, была закрыта клавиатура
     if (lastHeight <> 100) {
                    WebView vw = (WebView) findViewById(R.id.webView);
                    vw.loadUrl("javascript:run()");
                }

                lastHeight = activityRootView.getHeight(); // установка предыдущего значения
            }


        });

    private static long back_pressed;

    public void onBackPressed() {
        if (back_pressed + 2000 > System.currentTimeMillis())
            super.onBackPressed();
        else
            Toast.makeText(getBaseContext(), "Для выхода нажмите еще раз",
                    Toast.LENGTH_SHORT).show();
        back_pressed = System.currentTimeMillis();
    }

}


Код index.html:

<input type="text">
<div id="test"></div>
<script type="text/javascript" src="js.js"></script>

Код js.js:

function run (){ document.querySelector('#test').innerText = 'hello'}
Опубликован 10.01.2016 в 19:22 Последнее изменение: 10.01.2016 в 22:52

Выберите способ верификации:

Обновите страницу после прохождения верификации.