一.android 交互

1.js调用webview

在android API Level 17及以上的版本中,就会出现js调用不了android的代码,这是版本兼容的问题,需要在调用的方法上面加一个注解:@JavascriptInterface,这个注解需要导入一个包:import android.webkit.JavascriptInterface;

public void onCreate(Bundle savedInstanceState) {
//给js设置调用的方法
this.appView.addJavascriptInterface(new JavaScripdtObject(), "android");//这个android是注入对象
}
/**
* 供js调用的对象方法
* */
public class JavaScripdtObject { @JavascriptInterface//加入这个注解
public void runAndroidMethod(String str) {
Toast.makeText(MainActivity.this, "被js调用"+str, Toast.LENGTH_SHORT).show();
}
}

js 代码

<script>
window.android.runAndroidMethod(str);
</script>

2. android调用 js 这个简单

this.appView.getSettings().setJavaScriptEnabled(true);
this.appView.loadUrl("javascript:view.test()");

二. js 调用ios

- (void)addShowTypeView:(NSString *)nibName{

    UIApplication *app = [UIApplication sharedApplication];
AppDelegate *delegeat = app.delegate;
self.creativeView = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil][];
__weak __typeof__(self)self_weak = self; //返回
self.creativeView.backBtnBlock = ^(UIView *sideView){
[self_weak backBtnClickMainView:self_weak.webView View:sideView];
};
self.creativeView.frame = CGRectMake(kScreenWidth, , kScreenWidth/, kScreenHeight);
[delegeat.window addSubview:_creativeView];
[self TranslationViewAnimationMainView:self.webView rightView:self.creativeView];
} #pragma mark - UIWebView代理
/**
* 网页的JS动态调用OC的方法!!!
*/
// 此代理方法与加载页面有关系
- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{ NSString *urlString = [[request URL] absoluteString];
DLog(@"url = %@",urlString); NSArray *urlComps = [urlString componentsSeparatedByString:@"://"];
if([urlComps count] && [[urlComps objectAtIndex:] isEqualToString:@"objc"]) {
if (urlComps.count > ) { if ([urlComps[] hasPrefix:@"showTypeView"]) { NSArray *arr = [urlComps[] componentsSeparatedByString:@"&"];
if (arr.count > ) {
SEL sel = NSSelectorFromString(arr[]);
if ([self respondsToSelector:sel]) {
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:sel withObject:((arr.count>)?arr[]:nil)];
# pragma clang diagnostic pop }
} }
else if ([urlComps[] hasPrefix:@"showshareView"]) {
NSArray *arr = [urlComps[] componentsSeparatedByString:@"&"];
if (arr.count > ) {
SEL sel = NSSelectorFromString(arr[]);
if ([self respondsToSelector:sel]) {
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:sel withObject:((arr.count>)?arr[]:nil)];
# pragma clang diagnostic pop }
} }
}
} return YES;
}

js 代码

document.location="objc://showTypeView:&1";

js 与 ios Android交互的更多相关文章

  1. Ios开发之 -- js和ios的交互

    ==WebViewJavascriptBridge的介绍== #下载:https://github.com/marcuswestin/WebViewJavascriptBridge #关于WebVie ...

  2. JS与IOS、Android的交互

    一.JS与Android 放在了assets文件夹下了(注意若使用的是AS这个IDE,assets文件夹应放在src/main目录下) <!DOCTYPE html> <html&g ...

  3. JS与IOS、安卓的交互

    最近做的项目中涉及到了与安卓和ios的交互问题,对于一个新手来说,多多少少会有点迷糊.在调用安卓和ios的callback回调时,很轻松的就调用成功了,而且,步骤也不那么繁琐.刚开始,只知道那样使用可 ...

  4. Android混合开发之WebViewJavascriptBridge实现JS与java安全交互

    前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...

  5. Ionic中使用Chart.js进行图表展示以及在iOS/Android中的性能差异

    Angular Chart 简介 在之前的文章中介绍了使用 Ionic 开发跨平台(iOS & Android)应用中遇到的一些问题的解决方案. 在更新0.1.3版本的过程中遇到了需要使用图表 ...

  6. iOS中JS 与OC的交互(JavaScriptCore.framework)

    iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...

  7. 毫无保留开源我写的:IOS Android Ipad 多点触摸通用js 库

    毫无保留开源我写的:IOS Android Ipad 多点触摸通用js 库 在线演示地址: http://m.yunxunmi.com/ 支持 IOS Android Ipad 等不同操作系统的手持或 ...

  8. iOS开发:JavaScriptCore.framework的简单使用--JS与OC的交互篇

    iOS7之后苹果为众猿推出了JavaScriptCore.framework这个框架,这个框架为大家在与JS交互上提供了很大帮助,可以在html界面上调用OC方法并传参,也可以在OC上调用JS方法并传 ...

  9. 关于前端本地压缩图片,兼容IOS/Android/PC且自动按需加载文件之lrz.bundle.js

    一.介绍说明主要特点: ①在前端压缩好要上传的图片可以更快的发送给后端,因此也特别适合在移动设备上使用. ②兼容IOS/Android,修复了IOS/Android某些版本已知的BUG. ③按需加载文 ...

随机推荐

  1. Markdown不常见功能

    推荐几个Markdown不常见功能 1.表情符号 emoji表情使用:EMOJICODE:的格式,详细列表可见 https://www.webpagefx.com/tools/emoji-cheat- ...

  2. PHP设计模式二:单例模式

    一.什么是单例模式 作为对象的创建模式,单例模式确保某一个类只有一个实例,并且对外提供这个全局实例的访问入口.它不会 创建实例副本,而是会向单例类内部存储的实例返回一个引用. 二.PHP单例模式三要素 ...

  3. 推荐使用国内的豆瓣源安装Python插件

    以前都是用pip安装Python插件的,直到今天 pip的原理其实是从Python的官方源pypi.python.org/pypi下载到本地,然后解包安装 但是有的时候,这个操作会非常慢,国内可以通过 ...

  4. python的小基础

    变量python中的变量为指向常量的地址当常量没有指向时,系统自动回收内存空间如A = 1B = AA = 2print(A,B)#2,1id(A),id(B)id()为python虚拟机的虚拟地址, ...

  5. 推荐一款不错的反编译软件:Reflector

    只需要把要反编译的dll拖放到程序窗口就可以看到code了.是不是很简单,快来试试吧.不只是可以反编译个人写的code,.Net库一样可以查看代码.想学习.Net核心代码的可以试试看.

  6. Leetcode题解(33)

    113. Path Sum II 题目 分析: 主要考察二叉树深度优先遍历(DFS),递归调用当前节点的左右结点即可,代码如下(copy网上): /** * Definition for binary ...

  7. code forces 436 D. Make a Permutation!

    D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  8. Summer Holiday

    Summer Holiday Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  9. Can you find it?

    Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others) T ...

  10. 【Spring】渲染Web视图

    前言 前面学习了编写Web请求的控制器,创建简单的视图,本篇博文讲解控制器完成请求到结果渲染到用户的浏览器的过程. 渲染Web视图 理解视图解析 前面所编写的控制器方法都没有直接产生浏览器中渲染所需要 ...