Android_html5交互 彈框localstorage 存值 總體案例

經歷2周多的時間 終因而完成了還算能夠的android 總體案例了,分享下給你們  也但願本身有時間回過頭來看看當初研究android的糾結心情。痛苦的經歷是開發android 大部分都是在網上找解決方式 各類 錯誤 再接着找 解決方法  這個時候真的很蛋疼  如今終於能應用於項目了。javascript

PS:咱們的項目時 套殼 首頁用android 的 其餘都是html5 完成  這就須要 學習 交互的問題了  廢話很少說了 也沒別的  想發牢騷下   O(∩_∩)O~html

導入 ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar html5

package com.example.user.testwap;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.JavascriptInterface;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import static android.net.Uri.*;

public class MainActivity extends AppCompatActivity {
WebView webview;
private PersonService service;
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//實例化WebView對象
webview = new WebView(this);
service =new PersonService();
//設置WebView屬性,可以執行Javascript腳本 啓用javascript支持
webview.getSettings().setJavaScriptEnabled(true);

//啓用 LocalStorage 支持
webview.getSettings().setDomStorageEnabled(true);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
webview.getSettings().setAppCachePath(appCachePath);
webview.getSettings().setAllowFileAccess(true);
webview.getSettings().setAppCacheEnabled(true);

//new類名,交互訪問時使用的別名
webview.addJavascriptInterface(new JavaScriptInterface(), "demo");
//js彈出
webview.setWebChromeClient(new WebChromeClient());
try {
//設置打開的頁面地址
webview.loadUrl("http://192.168.16.39:8901/");

webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 重寫此方法代表點擊網頁裏面的連接仍是在當前的webview裏跳轉,不跳到瀏覽器那邊
view.loadUrl(url);
return true;
}

});


}
catch(Exception ex)
{
ex.printStackTrace();
}
setContentView(webview);
}
public final  class JavaScriptInterface {
@JavascriptInterface
public void getPersonList(){
mHandler.post(new Runnable() {
public void run() {

webview.loadUrl("javascript:wave()");//執行html佈局文件中的javascript函數代碼--

} catch (Exception e) {
// TODO: handle exception
}
}
});
}
@JavascriptInterface
public void postPay(String data) {
String dd = data;

}
@JavascriptInterface
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
if (message.length() != 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("From JavaScript").setMessage(message).show();
result.cancel();
return true;
}
return false;
}
//打電話的方法
@JavascriptInterface
public void call(String mobile){
Toast.makeText(MainActivity.this, mobile, Toast.LENGTH_LONG).show();
//Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ mobile));
//startActivity(intent);
}
}
@JavascriptInterface  //必須加入這個註解  不然可能app 與 html 5 不能交互

html 頁面
<input type='button' onclick='window.demo.call("335623365")' value='app存值' /> // 能夠調用到app 的 call 方法
<script type="text/javascript">

function wave() {
alert(123456);java

}android

</script>web

html5 頁面的js 放在哪本身安排 只要是html頁面就好了 別放app裏就好json

最後加入權限在AndroidManifest.xml 頁面瀏覽器

<!-- 聯網權限 --><uses-permission android:name="android.permission.CALL_PHONE" /><uses-permission android:name="android.permission.INTERNET" /><!-- 讀寫權限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />這個總體案例 集合了 localstorage 本地存儲  app與html5 交互 彈窗 
相關文章
相關標籤/搜索