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 交互 弹窗 
时间: 2024-10-13 12:56:37

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

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

http://blog.csdn.net/u013267266/article/details/51530611 localStorage.setItem("key","value");//存储变量名为key,值为value的变量 localStorage.key = "value"//存储变量名为key,值为value的变量 localStorage.getItem("key");//获取存储的变量key的值www.it16

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

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

layer ui使用多层弹框时,各个页面交互问题

最近在用layer ui的弹框做项目,使用的时候有时会用到2-3级的弹框,多级弹框会遇到每个弹框的数据之间的交互问题,例如: 图中有两个弹框父级弹框编辑用户,子级弹框角色分配,我所选中的复选框,需要在父级弹框里显示出来那我父级页面的弹框的代码可以这样写$('.user-add').on("click", function() {var url = basePath + "/admin/user/v/userAdd";layer.open({type: 2,title

vue弹框,删除元素

1.效果 2.index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"> <title>Ti

Jquery学习笔记(8)--京东导航菜单(2)增加弹框

京东导航,添加中间的弹框栏,使用position定位,放在左侧栏的li标签里面,成为一个整体,保证鼠标在弹框里的时候,弹框不消失: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script src="jquery.js&quo

CreateProcessAsUser,C#写的windows服务弹框提示消息或者启动复杂的UI界面的子进程

服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何用户参与.Windows 服务在后台执行着各种各样任务,支持着我们日常的桌面操作.有时候可能需要服务与用户进行信息或界面交互操作,这种方式在XP 时代是没有问题的,但自从Vista 开始你会发现这种方式似乎已不起作用. 现在有个需求需要服务程序弹框提示和启动包含复杂UI的桌面程序,"穿透Sessio

简单的自定义弹框

作为初学者,很多人都是用的系统自带的弹框,非常的简单,完全不能满足用户的交互,所以这里,我们需要自定义一个弹框,把输入框.图片.按钮等添加到弹框里面.为了避免重复冗余的代码,参考了别人的代码,自己做了一个自定义弹框,可以在项目中使用到.给大家一个思路. 这是代码的接口定义,只需要调用一行代码就可以弹出一个自定义的视图啦.还会添加一些动画效果,让弹框弹出跟消失更美观. + (void)showPromptBoxWithCustomView:(UIView *)customView; + (void

弹框&amp;可用于判断

较常用的弹框:(3种) 1.prompt("显示用户的文本","输入域的默认值"): print();显示打印的对话框: find();显示查找的对话框: (用处有限) 2.alert("提示内容"): 通常用来"警告用户",看完后只能关闭对话框. 3.window.confirm("内容"): 有确定的取消两个选择,通常用来让用户确定是否执行给定的操作:返回布尔值,true表示用户单机确定,false表示

Dynamics CRM2016 关闭错误报告弹框提示

在之前的版本中错误报告的弹框提示是可以在隐私首选项中设置关闭的,如下图所示 但是在2016中这个设置没了 有人说在右上角的选项中设置,但那个只能是设置个人的无法修改系统级别的.在系统中找了半天还是没有找到可以设置的地方,既然前台没有入口那只有打后台的主意了,打开组织数据库中的Organization表,将ReportScriptErrors字段的值修改为3(默认值是0)即为关闭.