android重写webview长按时选择文字然后点击搜索按钮的事件,默认是chrome接受点击事件,现在跳转到360搜索页面_html/css_WEB-ITnose

PHP中文网
Freigeben: 2016-06-24 11:45:19
Original
1982 Leute haben es durchsucht


用这个FindWebView替换默认使用的webview就可以了,重写SelectedText 类里地 show方法 string data就是获取到的选中的文字

import android.annotation.SuppressLint;
 import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Build;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.ActionMode;
 import android.view.ActionMode.Callback;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.webkit.JavascriptInterface;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
Nach dem Login kopieren
/**  
* 在webview的界面里面填加 长按界面时出现搜索按钮 点击搜索按钮跳转到搜索页面  
*  
* @author 王训龙 360404113  
*        
  *         2014-8-8 上午11:39:16  */
   @TargetApi(Build.VERSION_CODES.HONEYCOMB) 
   public class FindWebView extends WebView {     
   public Callback callback;     
   private OnScrollChangedListener mOnScrollChangedListener;         
   @SuppressWarnings("deprecation")    
    public FindWebView(Context context, AttributeSet attrs, int defStyle,                        
    boolean privateBrowsing) {         
    super(context, attrs, defStyle, privateBrowsing);         
    init();     }       
    public FindWebView(Context context, AttributeSet attrs, int defStyle) {         
    super(context, attrs, defStyle);         
    init();     
    }       
    public FindWebView(Context context, AttributeSet attrs) {         
    super(context, attrs);         
    init();     
    }       
    public FindWebView(Context context) {         
    super(context);         
    init();     
    }       
    @TargetApi(Build.VERSION_CODES.KITKAT)     
    @SuppressLint("SetJavaScriptEnabled")     
    private void init() {         
    WebSettings setting = getSettings();         
    setting.setJavaScriptEnabled(true);         
    setting.setJavaScriptCanOpenWindowsAutomatically(true);         
    addJavascriptInterface(new SelectedText(), "search");           
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Constants.DEBUG) {   
    //支持webview调试         
    WebView.setWebContentsDebuggingEnabled(true);         
    }       
    }       
    @Override     
    public ActionMode startActionMode(Callback callback) {         
CustomizedSelectActionModeCallback customizedSelectActionModeCallback = new CustomizedSelectActionModeCallback(   
callback);        
 return super.startActionMode(customizedSelectActionModeCallback);     
 }       
 @Override     
 public boolean onTouchEvent(MotionEvent event) {         
 return super.onTouchEvent(event);     
 }       
 public class CustomizedSelectActionModeCallback implements ActionMode.Callback {         
 private Callback callback;           
 public CustomizedSelectActionModeCallback(Callback callback) {             
 this.callback = callback;         
 }           
 @Override         
 public boolean onCreateActionMode(ActionMode mode, Menu menu) {             
 return callback.onCreateActionMode(mode, menu);         
 }           
 @Override         
 public boolean onPrepareActionMode(ActionMode mode, Menu menu) {             
 return callback.onPrepareActionMode(mode, menu);         
 }           
 @Override         
 public boolean onActionItemClicked(ActionMode mode, MenuItem item) {             
 if (item == null || TextUtils.isEmpty(item.getTitle())) {                 
 return callback.onActionItemClicked(mode, item);             
 }             
 if (!item.getTitle().toString().contains("搜索")                     
 && !item.getTitle().toString().contains("search")) {                 
 return callback.onActionItemClicked(mode, item);             
 }             
 loadUrl("javascript:window.search.show(window.getSelection().toString());");             
 clearFocus();             
 return true;         
 }           
 @Override         
 public void onDestroyActionMode(ActionMode mode) {             
 callback.onDestroyActionMode(mode);         
 }     
 }       
 public class SelectedText {         
 @JavascriptInterface         
 public void show(String data) {             
 // TODO 这里获取选中的文字            
  Intent intent = new Intent(getContext(), SearchActivity.class);             
  intent.putExtra(SearchActivity.TAG_SEARCH, data);             
  getContext().startActivity(intent);         
  }     
  }       
  private int dY;       
  @Override     
  protected void onScrollChanged(int l, int t, int oldl, int oldt) {         
  super.onScrollChanged(l, t, oldl, oldt);           
  int dy = t - oldt;         
  dY += dy;         
  if (mOnScrollChangedListener != null && Math.abs(dY) > 10) {             
  dY = 0;             
  mOnScrollChangedListener.onScroll(l, t, oldl, oldt);         
  }     
  }       
  public interface OnScrollChangedListener {         
  public void onScroll(int l, int t, int oldl, int oldt);     
  }       
  public void setOnScrollChangedListener(OnScrollChangedListener mOnScrollChangedListener) {         
  this.mOnScrollChangedListener = mOnScrollChangedListener;     
  } 
  }
Nach dem Login kopieren

以上就是android重写webview长按时选择文字然后点击搜索按钮的事件,默认是chrome接受点击事件,现在跳转到360搜索页面_html/css_WEB-ITnose的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage