Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android內嵌網頁webview點擊其中的鏈接跳轉到我們應用內的Activity

Android內嵌網頁webview點擊其中的鏈接跳轉到我們應用內的Activity

編輯:關於Android編程

在一個大的Android項目中,由於客戶端來不及更新和實現,經常會內嵌一些網頁(在一些大型的互聯網公司,PC的產品總是跑在客戶端的前面),比如活動頁面,通常可以內嵌用html5實現的頁面,可以適配手機。但是這些網頁中有好多鏈接,但是這些鏈接有些內容有是我們客戶端已經實現的,比如有一個注冊鏈接,其實客戶端也實現了注冊功能,我們不想再繼續跳轉到網頁注冊,而是打開客戶端某個注冊Activity,可以通過以下方式來實現:

 

xml 文件,如下:

 


java代碼如下:

 

 

/**
 * 通用的webview,只需要傳入2個參數即可, param1:title 標題 param2:url 網站
 * 
 
 * 
 */


public class PublicWebView extends Activity {
private WebView webview;
private ImageButton back;
private LinearLayout public_webview_top;
private boolean showTitle;
private ProgressBar progressBar;


@SuppressLint(JavascriptInterface)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


setContentView(R.layout.public_webview);


Intent intent = getIntent();
String url = intent.getStringExtra(url);
String title = intent.getStringExtra(title);
showTitle = intent.getBooleanExtra(show_title, true);


public_webview_top = (LinearLayout) findViewById(R.id.public_webview_top);
if (showTitle) {
public_webview_top.setVisibility(View.VISIBLE);
} else {
public_webview_top.setVisibility(View.GONE);
}
TextView titletv = (TextView) findViewById(R.id.public_webview_title);
titletv.setText(title);


progressBar = (ProgressBar) findViewById(R.id.public_webview_progressbar);


webview = (WebView) findViewById(R.id.public_webview_webview);
// 加載需要顯示的網頁
webview.addJavascriptInterface(new JavascriptInterface(PublicWebView.this), Phoenix_Android);


webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
// 設置WebView屬性,能夠執行Javascript腳本
webview.getSettings().setJavaScriptEnabled(true);
// 加載需要顯示的網頁
webview.loadUrl(url);
// 設置Web視圖
webview.setWebViewClient(new MyWebViewClient());
webview.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else{
progressBar.setVisibility(View.VISIBLE);
}
super.onProgressChanged(view, newProgress);
}
});


back = (ImageButton) findViewById(R.id.public_webview_back);
back.setOnClickListener(new BackListener(PublicWebView.this, null, 1));


}


@SuppressLint(NewApi)
public class JavascriptInterface {
@SuppressWarnings(unused)
private Context context;


public JavascriptInterface(Context context) {
this.context = context;
}


public void back(String module, int status, String place) {
reFreshBlance();


if (status == -1) { // 用戶取消了
return;
} else if (status == 0) {
Toast.makeText(PublicWebView.this, 充值請求失敗,請稍後重試..., Toast.LENGTH_SHORT).show();
return;
} else if (status == 1) {
// 充值請求成功
reFreshBlance();
// 1.用戶中心進來的有兩個參數
// a.bet參數是返回購彩界面
// b.userCenter返回用戶中心


}
}
}


// 監聽 所有點擊的鏈接,如果攔截到我們需要的,就跳轉到相對應的頁面。
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
System.out.println(----------------------shouldOverrideUrlLoading 。。 url: + url);


if (url != null && url.contains(/m/phoneRegiste.do)) {
Intent intent = new Intent(PublicWebView.this, RegisterByPhone.class);
PublicWebView.this.startActivity(intent);
 
finish();
return true;
}  


return super.shouldOverrideUrlLoading(view, url);
}


@Override
public void onPageFinished(WebView view, String url) {
view.getSettings().setJavaScriptEnabled(true);
super.onPageFinished(view, url);


}
}


 


// 覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {
// webview.goBack();// 返回前一個頁面
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}



 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved