1.遺留問題:彈出窗口關閉後整個屏幕亮度很是高,一段時間後纔會恢復。html
2.遇到的問題:使用 import android.support.v7.app.AlertDialog 彈窗就閃退。java
返回鍵 | 經過重寫dispatchKeyEvent函數修改返回鍵事件 package com.example.lyj.crosswalk; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; import org.xwalk.core.XWalkView; public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AndroidBug5497Workaround.assistActivity(this); XWalkView xWalkView = findViewById(R.id.web); xWalkView.loadUrl("file:///android_asset/index.html"); } @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && 0 == event.getRepeatCount() && event.getAction() == KeyEvent.ACTION_DOWN){ new AlertDialog.Builder(MainActivity.this) .setTitle("退出肯定") .setMessage("是否肯定退出?") .setPositiveButton("肯定退出", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { finish(); } }) .setNegativeButton("取消退出", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }) .create() .show(); return false; } return super.dispatchKeyEvent(event); } }
|
prompt監聽 |
重寫onJsPrompt函數,自定義彈出窗口樣式和內容![]() xWalkView.setUIClient(new XWalkUIClient(xWalkView){ @Override public boolean onJsPrompt(XWalkView view, String url, String message, final String defaultValue, final XWalkJavascriptResult result) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); final EditText editText = new EditText(MainActivity.this); Uri uri = Uri.parse(message); editText.setText(defaultValue); if(uri.getAuthority().equals("serverAddr")) { builder.setTitle("請輸入服務器地址").setView(editText); } else if(uri.getAuthority().equals("operator")) { builder.setTitle("請輸入運營商信息").setView(editText); } else { builder.setTitle("error"); } builder.setPositiveButton("輸入確認", new DialogInterface.OnClickListener() { @Override //確認鍵處理 public void onClick(DialogInterface dialogInterface, int i) { result.confirmWithResult(editText.getText().toString()); } }); builder.setNegativeButton("取消輸入", new DialogInterface.OnClickListener() { @Override //取消鍵處理 public void onClick(DialogInterface dialogInterface, int i) { result.confirmWithResult(defaultValue); } }); builder.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override //返回鍵處理 public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) { if(KeyEvent.KEYCODE_BACK == i) return true; //返回鍵攔截 return false; //其餘鍵直接返回 } }); builder.show(); return true; } }); |