zoukankan      html  css  js  c++  java
  • Android_html5交互 弹框localstorage 存值 整体案例

    经历2周多的时间 终于是完成了还算可以的android 整体案例了,分享下给大家  也希望自己有时间回过头来看看当初研究android的纠结心情。痛苦的经历是开发android 大部分都是在网上找解决方式 各种 错误 再接着找 解决方法  这个时候真的很蛋疼  现在终于能应用于项目了。

    PS:我们的项目时 套壳 首页用android 的 其他都是html5 完成  这就需要 学习 交互的问题了  废话不多说了 也没别的  想发牢骚下   O(∩_∩)O~

    导入 ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar 

    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);

    }

    </script>

    html5 页面的js 放在哪自己安排 只要是html页面就行了 别放app里就好

    最后加入权限在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 交互 弹窗
  • 相关阅读:
    Blender 3DOne
    [翻译]XNA外文博客文章精选之sixteen(中)
    实习技术员的基本功(二)
    [翻译]XNA外文博客文章精选之fifteen
    实习技术员的基本功(三)
    [翻译]XNA外文博客文章精选之sixteen(下)
    实习技术员的基本功(一)
    [翻译]XNA外文博客文章精选之sixteen(上)
    思维导图
    MySQL error 1045(28000): Access denied for user ...
  • 原文地址:https://www.cnblogs.com/bruceli-net/p/5729965.html
Copyright © 2011-2022 走看看