導航:首頁 > 源碼編譯 > 安卓webview源碼

安卓webview源碼

發布時間:2022-01-23 17:39:37

android 在WebView中通過javascript獲取網頁源碼,並在TextView或者在EditText中顯示問題

webview js之間的交互,項目中馬上用到。

JS調用java代碼效果圖


index.html代碼:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" language="javascript"> var share = JSON.stringify({"title": "sinodata",
"desc": "ios",
"shareUrl": "http://www.sinodata.com.cn"
});

function sendInfoToJava(){
window.AndroidWebView.showInfoFromJs(share);
}

<!--在android代碼中調用此方法-->
function showInfoFromJava(msg){
alert("showInfoFromJava:"+msg);
} </script></head><body la><div id='b'> <input onclick="sendInfoToJava()" type="button" value="sendInfoToJava"/></div></body></html>
布局代碼:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.chenjifang.webview.MainActivity"> <Button android:id="@+id/test_btn" android:text="代碼中調用web js代碼傳遞參數" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/test_edt" android:layout_width="match_parent" android:layout_height="wrap_content" /><WebView android:id="@+id/test_webview" android:layout_width="match_parent" android:layout_height="400dp"></WebView></LinearLayout>
java代碼:

public class MainActivity extends AppCompatActivity {private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.test_webview); //設置WebView支持JavaScript mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("file:///android_asset/index.html"); mWebView.addJavascriptInterface(new JsInterface(this), "AndroidWebView"); //添加客戶端支持 mWebView.setWebChromeClient(new WebChromeClient()); findViewById(R.id.test_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
sendInfoToJs(); }
}); } private class JsInterface { private Context mContext; public JsInterface(Context context) { this.mContext = context; } //在js中調用window.AndroidWebView.showInfoFromJs(name),便會觸發此方法。 @JavascriptInterface public void showInfoFromJs(String share) {
Toast.makeText(mContext, share, Toast.LENGTH_SHORT).show(); }
} //在java中調用js代碼 public void sendInfoToJs() {
String msg = ((EditText)findViewById(R.id.test_edt)).getText().toString(); //調用js中的函數:showInfoFromJava(msg) mWebView.loadUrl("javascript:showInfoFromJava('" + msg + "')"); }
總結下,java代碼中要設置webview對javascript的支持,addJavascriptInterface(new JsInterface(this), "AndroidWebView");//這句代碼中的第二個參數是在js訪問方法的地址。
window.AndroidWebView.showInfoFromJs(share);

❷ android 怎樣封裝webview代碼重用

使用場景:
1.)添加許可權
<uses-permission android:name="android.permission.INTERNET" />

2.)布局文件
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />

3.)數據載入
載入本地資源
webView.loadUrl("file:///android_asset/example.html");

載入網路資源
webView.loadUrl("www.xxx.com/index.html");

添加請求頭信息

安卓如何使用WebView組件載入HTML代碼

1)修改新建項目的resIayout目錄下的布局文件main.xml,將默認添加的TextView組件刪除,然後添加一個WebView組件

2)在MainActivity的onCreate()方法中,首先獲取布局管理器中添加的Web View組件,然後創建一個字元串構建器,將要顯示的HTML代碼放置在該構建器中,最後應用IoadDataWithBaseURLO方法載入構建器中的HTML代碼

android客戶端常會調用到html頁面,給webview頁面適配android凌亂的設備帶來很大的困難。

可以找到的方法是通過ZoomDensity.setDefaultZoom根據解析度480寬度為基準縮放。

不過ZoomDensity.setDefaultZoom在2.0以下的平台是無法調用的,需要自己反射調用。

即使是ZoomDensity.setDefaultZoom設置了縮放,但還是會在很多設備無效。經過摸索還需做一些修改:

1,頁面head添加

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />


2,設置字體也按480基準縮放。

下面是代碼:

Java代碼

privatevoidsetZoom(WebSettingswebSettings){intscreenDensity=getResources().getDisplayMetrics().densityDpi;Stringzd="FAR";switch(screenDensity){caseDisplayMetrics.DENSITY_LOW:zd="CLOSE";break;caseDisplayMetrics.DENSITY_MEDIUM:zd="MEDIUM";break;}Class<?>zoomDensityClass=null;Enum<?>zoomDensity=null;try{if(zoomDensityClass==null){zoomDensityClass=Class.forName("android.webkit.WebSettings$ZoomDensity");}if(zoomDensity==null){zoomDensity=(Enum<?>)Enum.valueOf((Class)zoomDensityClass,zd);}Methodmethod=WebSettings.class.getDeclaredMethod("setDefaultZoom",newClass<?>[]{zoomDensityClass});if(method!=null){method.invoke(webSettings,zoomDensity);}method=WebSettings.class.getDeclaredMethod("setTextZoom",newClass<?>[]{int.class});if(method!=null){method.invoke(webSettings,100*getWindowManager().getDefaultDisplay().getWidth()/480);}}catch(Exceptione){Log.e(TAG,e.getMessage());return;}}




Android的webview載入本地html、本apk內html和遠程URL

Android的webview載入本地html、本apk內html和遠程URL

android客戶端常會調用到html頁面,給webview頁面適配android凌亂的設備帶來很大的困難。

可以找到的方法是通過ZoomDensity.setDefaultZoom根據解析度480寬度為基準縮放。

不過ZoomDensity.setDefaultZoom在2.0以下的平台是無法調用的,需要自己反射調用。

即使是ZoomDensity.setDefaultZoom設置了縮放,但還是會在很多設備無效。經過摸索還需做一些修改:

1,頁面head添加

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />


2,設置字體也按480基準縮放。

下面是代碼:

Java代碼

privatevoidsetZoom(WebSettingswebSettings){intscreenDensity=getResources().getDisplayMetrics().densityDpi;Stringzd="FAR";switch(screenDensity){caseDisplayMetrics.DENSITY_LOW:zd="CLOSE";break;caseDisplayMetrics.DENSITY_MEDIUM:zd="MEDIUM";break;}Class<?>zoomDensityClass=null;Enum<?>zoomDensity=null;try{if(zoomDensityClass==null){zoomDensityClass=Class.forName("android.webkit.WebSettings$ZoomDensity");}if(zoomDensity==null){zoomDensity=(Enum<?>)Enum.valueOf((Class)zoomDensityClass,zd);}Methodmethod=WebSettings.class.getDeclaredMethod("setDefaultZoom",newClass<?>[]{zoomDensityClass});if(method!=null){method.invoke(webSettings,zoomDensity);}method=WebSettings.class.getDeclaredMethod("setTextZoom",newClass<?>[]{int.class});if(method!=null){method.invoke(webSettings,100*getWindowManager().getDefaultDisplay().getWidth()/480);}}catch(Exceptione){Log.e(TAG,e.getMessage());return;}}

❹ 安卓webview怎麼webview的代碼列印出來

1.android中利用webview調用網頁上的js代碼。
Android 中可以通過webview來實現和js的交互,在程序中調用js代碼,只需要將webview控制項的支持js的屬性設置為true,,然後通過loadUrl就可以直接進行調用,如下所示:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");
2. 網頁上調用android中java代碼的方法
在網頁中調用java代碼,需要在webview控制項中添加javascriptInterface。如下所示:
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(Test.this, "測試調用java", Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
在網頁中,只需要像調用js方法一樣,進行調用就可以
<div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div>
3. Java代碼調用js並傳參
首先需要帶參數的js函數,如function test(str),然後只需在調用js時傳入參數即可,如下所示:
mWebView.loadUrl("javascript:test('aa')");
4.Js中調用java函數並傳參
首先一樣需要帶參數的函數形式,但需注意此處的參數需要final類型,即得到以後不可修改,如果需要修改其中的值,可以先設置中間變數,然後進行修改。如下所示:
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid(final int i) {
mHandler.post(new Runnable() {
public void run() {
int j = i;
j++;
Toast.makeText(Test.this, "測試調用java" + String.valueOf(j), Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
然後在html頁面中,利用如下代碼<div id='b'><a onclick="window.demo.clickOnAndroid(2)">b.c</a></div>,
即可實現調用

❺ 安卓中代碼創建webview

1. a.html建議放置在assets文件夾下,載入url的寫法是:file://android_assets/a.html
2. 可以嘗試新建asstes文件夾,Android Studio手動創建asstes路徑:src/main/asstes,Eclipse手動創建項目目錄下

❻ android系統源碼中webview控制項中如何設置內容選中圖標與webview下邊距離

在伺服器端的網頁設置,修改網頁。webview不支持這種設置

❼ android webview怎麼載入html源代碼

1.String customHtml = "<html><body><font color='red'>hello !</font></body></html>";
首先寫了一個html代碼段,用來顯示一段紅色的字體;
2.webview.loadData(customHtml, "text/html", "UTF-8"); 載入定義的代碼,並設定編碼格式和字元集;
3.運行效果;如圖:

❽ android webview載入某個網頁,之後通過這個網頁調到了另一個頁面,怎麼獲取這個頁面的網址和源碼

mWebView.setWebViewClient(new WebViewClient(){
// 這個方法在用戶試圖點開頁面上的某個鏈接時被調用
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url!=null) {
// 如果想繼續載入目標頁面則調用下面的語句
// view.loadUrl(url);
// 如果不想那url就是目標網址,如果想獲取目標網頁的內容那你可以用HTTP的API把網頁扒下來。
}
// 返回true表示停留在本WebView(不跳轉到系統的瀏覽器)
return true;
}
});

❾ 安卓開發webview運用的例子代碼誰有可否傳一份,網上的大都有錯誤,不要復制那些謝謝

你要實現什麼功能?

❿ 尋求一個Android app項目代碼 採用webview嵌入h5的方式實現 最好代碼能夠包括與後台交互的實現

我這里有一個代碼demo

閱讀全文

與安卓webview源碼相關的資料

熱點內容
sql插入數據命令 瀏覽:470
u盤根目錄文件夾是哪個 瀏覽:693
新預演算法預算編制 瀏覽:622
perl怎樣遍歷文件夾 瀏覽:636
安卓手機如何更好的保護隱私 瀏覽:316
程序員書籍知乎 瀏覽:154
王者安卓v區怎麼轉移到蘋果 瀏覽:449
加密區卸載 瀏覽:122
女程序員壓力大想辭職 瀏覽:681
演算法體現在哪裡 瀏覽:219
阿里雲個人伺服器推薦 瀏覽:363
汽車識別視頻文件夾 瀏覽:110
檔案伺服器不可用是什麼意思 瀏覽:525
有什麼app能看到老婆在哪 瀏覽:562
androidpdf源碼 瀏覽:435
方舟怎麼把單機人物上傳到伺服器 瀏覽:964
偏置命令下大小形狀保持不變 瀏覽:988
單片機各功能介面晶元 瀏覽:795
跳轉收費系統源碼 瀏覽:604
python3什麼時候 瀏覽:708