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

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

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

  1. package com.example.user.testwap;
  2.  
  3. 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;
  4.  
  5. import org.json.JSONArray;
    import org.json.JSONObject;
  6.  
  7. import java.util.List;
    import java.util.Timer;
    import java.util.TimerTask;
  8.  
  9. import static android.net.Uri.*;
  10.  
  11. 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);
  12.  
  13. //启用 LocalStorage 支持
    webview.getSettings().setDomStorageEnabled(true);
    String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
    webview.getSettings().setAppCachePath(appCachePath);
    webview.getSettings().setAllowFileAccess(true);
    webview.getSettings().setAppCacheEnabled(true);
  14.  
  15. //new类名,交互访问时使用的别名
    webview.addJavascriptInterface(new JavaScriptInterface(), "demo");
    //js弹出
    webview.setWebChromeClient(new WebChromeClient());
    try {
    //设置打开的页面地址
    webview.loadUrl("http://192.168.16.39:8901/");
  16.  
  17. webview.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
    view.loadUrl(url);
    return true;
    }
  18.  
  19. });
  20.  
  21. }
    catch(Exception ex)
    {
    ex.printStackTrace();
    }
    setContentView(webview);
    }
  1. public final class JavaScriptInterface {
    @JavascriptInterface
    public void getPersonList(){
    mHandler.post(new Runnable() {
    public void run() {
  2.  
  3. webview.loadUrl("javascript:wave()");//执行html布局文件中的javascript函数代码--
  4.  
  5. } catch (Exception e) {
    // TODO: handle exception
    }
    }
    });
    }
    @JavascriptInterface
    public void postPay(String data) {
    String dd = data;
  6.  
  7. }
    @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);
    }
    }
  1. @JavascriptInterface //必须加入这个注解 否则可能app 与 html 5 不能交互
  1. 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 页面

  1. <!-- 联网权限 -->
    <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" />
  2.  
  3. 这个整体案例 集合了 localstorage 本地存储 app与html5 交互 弹窗

Android_html5交互 弹框localstorage 存值 整体案例的更多相关文章

  1. localStorage存值取值以及存取JSON,以及基于html5 localStorage的购物车

    localStorage.setItem("key","value");//存储变量名为key,值为value的变量 localStorage.key = &q ...

  2. 在弹框中获取foreach中遍历的id值,并传递给地址栏(方法2)

    1.php有时候我们需要再弹框中获取foreach中遍历的数据(例如id),在弹框中点击按钮并传递给地址栏跳转.那么应该怎么做呢.第二种方法. 2. 可以在弹框中给出一个input hidden 点击 ...

  3. 在弹框中获取foreach中遍历的id值,并传递给地址栏。

    1.php有时候我们需要再弹框中获取foreach中遍历的数据(例如id),在弹框中点击按钮并传递给地址栏跳转.那么应该怎么做呢. 2. 点击取现按钮,如果没有设置密码->弹框 3. 点击去设置 ...

  4. 关于点击弹框外部区域弹框关闭的交互处理(前端JS)

    常见需求场景 前端在处理交互的时候,经常遇到这样的场景,点击一个按钮,出现一个弹框,点击外部区域,弹框关闭. 解决方法 思路说明: 1.给弹框的div父级都加个类名,如: 2.在document绑定一 ...

  5. 利用layer实现MVC页面数据互交提示弹框

    需求说明: 一个表单页面,点击提交之后,进入后台进行一系列数据交互,然后将交互信息返回至页面中,并以弹框形式展示 应用场景: 添加.修改.删除数据后,返回数据操作是否成功,以及一些其他信息 前期准备: ...

  6. Unity调用Windows弹框、提示框(确认与否,中文)

    Unity调用Windows弹提示框 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  7. 移动端ios升级到11及以上时,手机弹框输入光标出现错位问题

    引起原因:弹框的定位采取position:fixed,而ios(safari)对定位属性position:fixed的解析不一致导致. 解决方案: 方案一 一开始上网找解决方案,找到如下处理方式.但存 ...

  8. Jquary入门(添加 修改 表单元素)+ JSON+弹框

    字符串拼接 计算机语言 都是 对  数据的处理(获取/修改数据)  添加元素  除了  固定的方法添加 以外 都是   字符串拼接(拼接成固定格式即可执行). 1.表单添加元素  append() 方 ...

  9. ios UIWebView自定义Alert风格的弹框

    之前开发过一个App,因为公司之前写好了网页版的内容和安卓版本的App,我进去后老板要求我ios直接用网页的内容,而不需要自己再搭建框架.我一听,偷笑了,这不就是一个UIWebView吗?简单! 但是 ...

随机推荐

  1. 《Cracking the Coding Interview》——第18章:难题——题目12

    2014-04-29 04:36 题目:最大子数组和的二位扩展:最大子矩阵和. 解法:一个维度上进行枚举,复杂度O(n^2):另一个维度执行最大子数组和算法,复杂度O(n).总体时间复杂度为O(n^3 ...

  2. Spring+SpringMVC+MyBatis+Redis框架学习笔记

    在Java互联网中,以Spring+Spring MVC+MyBatis (SSM) 作为主流框架. SSM+Redis的结构图 在这种框架系统中: Spring IoC 承担了一个资源管理.整合.即 ...

  3. day06_04 购物车讲解02

    1.0 补充知识 a,b = [2,3] print(a) print(b) #>>>2 #>>>3 a,b = (2,3) print(a) print(b) # ...

  4. 孤荷凌寒自学python第三十天python的datetime.datetime模块

     孤荷凌寒自学python第三十天python的datetime.datetime模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.datetime模块包含了:datet ...

  5. 网络编程--广播&组播

    广播 1.广播地址 如果用{netid, subnetid, hostid}( {网络ID,子网ID,主机ID})表示IPv4地址.那么有四种类型的广播地址,我们用-1表示所有比特位均为1的字段: 1 ...

  6. 16个简单实用的.htaccess技巧

    .htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能.. ...

  7. Qt编程的一些技巧

    1.Qt程序在运行过程中,调用函数(如lcdNumber->display(num))显示数据到界面上时,并不会马上刷新屏幕显示,而是要等主程序运行到函数a.exec()时,才刷新屏幕,如下 因 ...

  8. 发现一个form小问题

    在使用编辑器及框架时,form表单如果在太靠内的div层里,就取不到textarea的post值,具体原因位置,可能跟框架的CSS有关

  9. 思梦PHP-阿里大鱼手机验证码

    小伙伴是否做PC网站的时候,是否遇到过注册用户需要使用短信验证的功能呢?或者找回密码,以及验证用户的信息等等功能!今天思梦PHP就为大家带来ThinkPHP整合阿里大鱼短信验证的功能! 首先,我们要明 ...

  10. LeetCode -- Construct Binary Tree from Preorder and Inorder

    Question: Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may as ...