WebView調用Activity
方式一
寫一個 JavaScriptinterface 類,裏面實現WebView向Activity 頁面跳轉
public class JavaScriptinterface {
Activity mActivity;
public JavaScriptinterface(Activity mActivity) {
this.mActivity = mActivity;
}
/** 與js交互時用到的方法,在js裏直接調用的 */
public void startActivity() {
Intent intent = new Intent();
intent.putExtra("fromWhich", "webViewUrl");
intent.putExtra("replyID", "replyID");
intent.setClass(mActivity, Testactvity.class);
mActivity.startActivity(intent);
}
}
而webView 實現 myWebView.addJavascriptInterface(new JavaScriptinterface(this), “android”); 添加 這個類,表情爲 android,在相應的網頁中鏈接或按鈕添加相應JS
function startActivity() {
android.startActivity();
}
JavaScriptinterface 的 startActivity 與 JS中的方法必須一致
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr"><br><head><br><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><br><br><script type="text/javascript"> <br>function startActivity() {
android.startActivity();
}<br></script><br><br></head><br><body><br><a href="#" id="a1" name="a1" onClick="startActivity()">button</a><br><input type="button" value="Say hello"<br> onClick="startActivity()"/><br> <br></body><br><br></html><br>
方式二
通過在 Activity 中 的 scheme 去實現,同時這種方式可對外開發,即別的APP中遵循這個 scheme 規則,即可打開註冊scheme 的Activity
<activity
android:name="com.example.webviewtest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="topicid" />
</intent-filter>
</activity>
在WebView 的主要代碼如下 button 超連接和scheme 一直 ,然後通過 Intent 傳值可以通過 topicid://aa.bb:80/test?p=12&d=1
字段去截取想要的屬性值。 這種方式 不能重寫 WebViewClient 方法,不然點擊就變爲 像這個 topicid://aa.bb:80/test?p=12&d=1 Url 跳轉。
方式三
通過重寫 WebViewClient ,在 WebViewClient 中 有shouldOverrideUrlLoading(WebView view, String url) 的方法,可以在裏面定義 Activity的跳轉 ,通過 自定義超鏈接的Url 格式去進行不同的操作,如:http://www.mofangge.com 爲 網頁跳轉 , blogJump://mofangge.com 鏈接形式爲 向Activity 跳轉,通過 url 頭部 進行 loadUrl 還是startActivity
的跳轉判斷。