導航:首頁 > 操作系統 > android內嵌h5

android內嵌h5

發布時間:2022-09-22 17:33:21

android嵌入h5,怎麼交互

Android和H5之間的交互
hybrid App開發也不是什麼新鮮事了,其中native和h5之間的交互則是必不可少的。Android中是如何和H5交互的?
1、webView載入頁面
我們都知道在Android中是通過webView來載入html頁面的,根據HTML文件所在的位置不同寫法也不同:
//例如:載入assets文件夾下的test.html頁面
mWebView.loadUrl("file:///android_asset/test.html")
//例如:載入網頁
mWebView.loadUrl("http://www..com")

如果只是這樣調用mWebView.loadUrl()載入的話,那麼當你點擊頁面中的鏈接時,頁面將會在你手機默認的瀏覽器上打開。那如果想要頁面在App內中打開的話,那麼就得設置setWebViewClient:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mWebView.loadUrl(url);
return true;
}
}
});

2、Android本地通過java調用HTML頁面中的JavaScript方法
想要調用js方法那麼就必須讓webView支持
WebSettings webSettings = mWebView.getSettings();
//設置為可調用js方法
webSettings.setJavaScriptEnabled(true);

若調用的js方法沒有返回值,則直接可以調用mWebView.loadUrl("JavaScript:do()");其中do是js中的方法;若有返回值時我們可以調用mWebView.evaluateJavascript()方法:
mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG, "onReceiveValue value=" + value);
}
});

js代碼如下:
<script type="text/javascript">
function sum(a,b){
return a+b;
}
function do(){
document.getElementById("p").innerHTML="hello world";
}
</script>

2、js調用Android本地Java方法
在Android4.2以上可以直接使用@JavascriptInterface註解來聲明,下面是在一個本地Java方法
public class JsInteration {
@JavascriptInterface
public String back() {
return "hello world";
}
}

定義完這個方法後再調用mWebView.addJavascriptInterface()方法:
mWebView.addJavascriptInterface(new JsInteration(), "android");

那麼在js中怎麼來調用呢?
<script type="text/javascript">
function s(){
//調用Java的back()方法
var result =window.android.back();
document.getElementById("p").innerHTML=result;
}

</script>

4、攔截HTML頁面中的點擊事件
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//判斷url攔截事件
if (url.equals("file:///android_asset/test2.html")) {
Log.e(TAG, "shouldOverrideUrlLoading: " + url);
startActivity(new Intent(MainActivity.this,Main2Activity.class));
return true;
} else {
mWebView.loadUrl(url);
return false;
}
}
});

以上就是Java調用js方法以及js調用Java方法的實現交互方式中的一種。下面給出完整代碼:
mainActivity
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
private WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webView);
mWebView.loadUrl("file:///android_asset/test.html");
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JsInteration(), "android");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("file:///android_asset/test2.html")) {
Log.e(TAG, "shouldOverrideUrlLoading: " + url);
startActivity(new Intent(MainActivity.this,Main2Activity.class));
return true;
} else {
mWebView.loadUrl(url);
return false;
}
}
});
}
//Android調用有返回值js方法
@TargetApi(Build.VERSION_CODES.KITKAT)
public void onClick(View v) {

mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG, "onReceiveValue value=" + value);
}
});
}
public class JsInteration {

@JavascriptInterface
public String back() {
return "hello world";
}
}
}

test.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
function sum(a,b){
return a+b;
}
function s(){
var result =window.android.back();
document.getElementById("p").innerHTML=result;
}

</script>
</head>
<body>
<button onclick="s()">調用本地方法</button>
<a href="file:///android_asset/test2.html">點擊</a>
<p id="p"></p>
</body>
</html>

⑵ 安卓內嵌h5能夠手勢滑動功能,而ios不能實現為什麼

總得一句話要重寫onTouchEvent 1.手勢滾動有很多方法: 可用viewpager實現view的左右滑屏,也可以用ViewFlipper,還有笨方法就是一個imageview,獲取按下抬起坐標,判斷左滑右滑,然後set另一張圖片進去。 2.縮放也有很多做法 正統的做法是把imageview的屬性scaleType設置為matrix(矩陣),然後獲取滑動手勢,來操作矩陣獲得縮放的效果

⑶ Android 嵌入H5 為什麼會出現翻頁現象

H5裡面有代碼控制

⑷ h5怎麼嵌套在android里

用webview顯示就行了

⑸ 安卓內嵌h5能夠手勢滑動功能,而ios不能實現為什麼

總得一句話要重寫onTouchEvent1手勢滾動有很多方法:可用viewpager實現view的左右滑屏,也可以用ViewFlipper,還有笨方法就是一個imageview,獲取按下抬起坐標,判斷左滑右滑,然後set另一張圖片進去。2縮放也有很多做法正統的做法是把imagevi安卓內嵌h5能夠手勢滑動功能,而ios不能實現為什麼

⑹ 有現成的h5頁面 怎麼嵌入到android

1:下載 2:解壓縮 3:把解出來的和H5的圖標一樣的那個復制到H5文件夾(不復制應該也可以) 4:進游戲 5:打開修改器 6:Move_Points是無限制移動 Build_Points是無限制建築 Show_me_money是無限金錢 I'm the superman是把等級調到最高級 這個是我用的修改器,娃娃 做的,現在貌似他又做了個6屬性的。不過應該差不多。 其實自己慢慢摸索一下就知道了。 -完畢-

⑺ 原生app中嵌入h5頁面。前端需要做什麼工作嗎或者前端需要跟Android或者ios人員溝通什麼

下午的時候又發現雙擊還可以放大,上網上找了很多方法都沒有什麼卵用,坑爹啊最後沒有辦法我只能用vpn上google一下了,看了好多最後終於讓我找到了
_webView.multipleTouchEnabled=NO
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView {

returnnil;
}
這兩個方法完美解決了雙擊放大的問題.
下面就是調用H5了其實很簡單只要跟後端約定好介面調用下面方法即可

其他地方調用H5介面只需調用webView的方法可以解決大部分問題.
H5前端介面約定如下(例子)
functionsendCommand(cmd,param){
varurl="newle:"+cmd+":"+param;
document.location = url;

⑻ app內嵌的h5頁面交互上 可以跳轉打開app內的頁面嗎

可以的,具體我記不太清了,大致實現方法是
進入H5頁面,js判斷是ios還是android或是h5,
然後向ios和android索要起對應的方法,然後判斷是否有這個方法,如果有就交還給app

閱讀全文

與android內嵌h5相關的資料

熱點內容
rf3148編程器 瀏覽:505
浙江標准網路伺服器機櫃雲主機 瀏覽:587
設置網路的伺服器地址 瀏覽:600
java圖形界面設計 瀏覽:751
純前端項目怎麼部署到伺服器 瀏覽:538
瓜子臉程序員 瀏覽:505
如何保證伺服器優質 瀏覽:94
小微信aPP怎麼一下找不到了 瀏覽:299
演算法纂要學術價值 瀏覽:975
程序員你好是什麼意思 瀏覽:801
倩女幽魂老伺服器如何玩 瀏覽:561
電子鍾單片機課程設計實驗報告 瀏覽:999
看加密頻道 瀏覽:381
程序員算不算流水線工人 瀏覽:632
三星電視我的app怎麼卸載 瀏覽:44
簡述vi編譯器的基本操作 瀏覽:507
讓程序員選小號 瀏覽:91
加強數字貨幣國際信息編譯能力 瀏覽:584
購買的app會員怎麼退安卓手機 瀏覽:891
程序員的種類及名稱 瀏覽:295