Подключите нашего Telegram-бота для уведомлений о новых проектах

Android webview

N
Заказчик
Отзывы фрилансеров: + 4 - 0
Зарегистрирован на сайте 9 лет и 3 месяца
Бюджет: по договоренности
Заходим в программу, кликаем на инпут – появляется клавиатура. Нажимаем "Назад" – клавиатура скрывается и срабатывает функция 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]

Теги: нужен разработчик, ищу разработчика, резюме разработчика, требуется приложение под android

Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».