Android_html5交互 弹框localstorage 存值 整体案例
2024-09-13 19:45:42
经历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 交互 弹窗
最新文章
- prolog 阶段总结
- 10款免费的响应式 WordPress 主题下载
- 操作系统开发系列—13.h.延时操作
- How to set colors of HTML tables
- 编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码
- HDU 4122 Alice&#39;s mooncake shop 单调队列优化dp
- JSP特点
- winform(C#)拖拽实现获得文件路径
- ios录音Demo
- 转: 【Java并发编程】之十七:深入Java内存模型—内存操作规则总结
- JavaScript基础回顾
- lwip Light Weight (轻型)IP协议
- Delphi基础-数据类型
- Markdown编辑器editor.md的使用---markdown上传图片
- JavaScript夯实基础系列(四):原型
- 聚类——K-means
- koa入门
- Hive 创建表
- python之pandas简单介绍及使用(一)
- Razor 中的@rendersection
热门文章
- Java的接口和抽象类深入理解
- 《Cracking the Coding Interview》——第18章:难题——题目12
- 《Cracking the Coding Interview》——第17章:普通题——题目11
- 《Cracking the Coding Interview》——第11章:排序和搜索——题目4
- GLIBCXX3.4.21 not find
- php 代码段执行时间
- (转\整)UE4游戏优化 多人大地型游戏的优化(三)GPU的优化
- (源)Post Material实现后期DitanceFog
- ./configure, make, sudo make install 的含义
- awk学习笔记