Как обрабатывать событие клика веб-просмотра в студии Android?

Я использую веб-просмотр в своем приложении, чтобы показать холст. В моем веб-просмотре есть кнопка «Нажмите здесь». Я хочу открыть новую активность при нажатии этой кнопки «нажмите здесь» в веб-просмотре. Я не знаю, как обработать это событие щелчка. Нужна помощь как можно скорее.

Ниже приведен код моего класса веб-просмотра:

public class TableWebView extends Activity {

    private SharedPreferences sharedPreferences;
    private String customer_id,hotel_id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_table_web_view);
        WebView wvtable= (WebView)findViewById(R.id.webViewTable);
        wvtable.setWebViewClient(new MyViewClient());
        WebSettings webSettings = wvtable.getSettings();
        webSettings.setJavaScriptEnabled(true);

        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        customer_id = sharedPreferences.getString("cust_id", "0");//if no customerid found automatically 0 will be used
        hotel_id=sharedPreferences.getString("hotel_master_id","0");

        wvtable.loadUrl("http://192.168.100.169/zoilo_admin/public/index.php/show-hotel-view?hotel_id="+hotel_id+"&customer_id="+customer_id+"&date_time="+ Util.selected_date_time);



    }

А вот как это выглядит после открытия этого URL-адреса в веб-просмотре:

табличный вид


person Dhiraj Devkar    schedule 03.04.2015    source источник
comment
попробуйте это   -  person Kunu    schedule 03.04.2015


Ответы (1)


Связывание кода JavaScript с кодом Android

При разработке веб-приложения, предназначенного специально для WebView в вашем приложении для Android, вы можете создавать интерфейсы между кодом JavaScript и клиентским кодом Android. Например, ваш код JavaScript может вызвать метод в вашем коде Android, чтобы начать действие.

Чтобы связать новый интерфейс между вашим кодом JavaScript и кодом Android, вызовите addJavascriptInterface(), передав ему экземпляр класса для привязки к вашему JavaScript и имя интерфейса, которое ваш JavaScript может вызывать для доступа к классу.

Предостережение: если вы установили для targetSdkVersion значение 17 или выше, вы должны добавить аннотацию @JavascriptInterface к любому методу, который вы хотите сделать доступным для вашего JavaScript (метод также должен быть общедоступным). Если вы не предоставите аннотацию, метод будет недоступен на вашей веб-странице при работе на Android 4.2 или выше.

public class TableWebView extends Activity {

    private SharedPreferences sharedPreferences;
    private String customer_id,hotel_id;
    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_table_web_view);

        WebView wvtable= (WebView)findViewById(R.id.webViewTable);

        wvtable.setWebViewClient(new MyViewClient());

        wvtable.addJavascriptInterface(new WebAppInterface(this), "Android");

        WebSettings webSettings = wvtable.getSettings();

        webSettings.setJavaScriptEnabled(true);

        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        customer_id = sharedPreferences.getString("cust_id", "0");//if no customerid found automatically 0 will be used
        hotel_id=sharedPreferences.getString("hotel_master_id","0");

        wvtable.loadUrl("http://192.168.100.169/zoilo_admin/public/index.php/show-hotel-view?hotel_id="+hotel_id+"&customer_id="+customer_id+"&date_time="+ Util.selected_date_time);
}



public class WebAppInterface { 
    Context mContext;

    /** Instantiate the interface and set the context */ 
    WebAppInterface(Context c) {
        mContext = c;
    } 

    /** Show a toast from the web page */ 
    @JavascriptInterface 
    public void startNewActivity() {
        //startActivity(new Intent(this, youactivityname.class));
    } 
} 

Это создает интерфейс Android для JavaScript, работающий в WebView. На данный момент ваше веб-приложение имеет доступ к классу WebAppInterface. Например, вот некоторые HTML и JavaScript, которые вызывают ваш метод startNewActivity вашего класса, используя новый интерфейс, когда пользователь нажимает кнопку:

<input type="button" value="Click Here" onClick="showActivity()" />

<script type="text/javascript">
    function showActivity() {
        Android.startNewActivity();
    }
</script>
person Bhavdip Sagar    schedule 03.04.2015
comment
На вашей странице html или php. который вы пытаетесь загрузить в веб-представлении wvtable.loadUrl(192.168.100.169/zoilo_admin/public/index.php/ Util.selected_date_time); - person Bhavdip Sagar; 03.04.2015
comment
это похоже на то, что php-страница выполнит мою функцию startnewActivity в Android? - person Dhiraj Devkar; 03.04.2015
comment
Да, это вызовет вашу родную функцию. - person Bhavdip Sagar; 03.04.2015
comment
Но убедитесь, что ваша веб-страница должна иметь блок javascript. - person Bhavdip Sagar; 03.04.2015
comment
Давайте продолжим это обсуждение в чате. - person Dhiraj Devkar; 03.04.2015