Android - Hybrid

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
的跳轉判斷。

發佈了116 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章