关于unity在android层访问WebView的一点心得
来源:互联网 发布:php 获取1688商品 编辑:程序博客网 时间:2024/05/21 19:47
有时候需要在unity打出的包中从unity跳到android层的Activity利用webview访问网页,然后问题来了,常常找不到webview控件,我发现是因为在R列表的int码不能被找到造成webview 老是报null。
然后使用传说中的反射原理,
利用 控件名回去找对应的控件,
以下是利用控件名查找对应对象的代码
import android.content.Context;
public class MResource {
public static int getIdByName(Context context, String className, String name) {
String packageName = context.getPackageName();
Class r = null;
int id = 0;
try{
r = Class.forName(packageName + ".R");
Class[] classes = r.getClasses();
Class desireClass = null;
for (int i = 0; i < classes.length; ++i) {
if (classes[i].getName().split("\\$")[1].equals(className)) {
desireClass = classes[i];
break;
}
}
if (desireClass != null)
id = desireClass.getField(name).getInt(desireClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return id;
}
public static int[] getIdsByName(Context context, String className, String name) {
String packageName = context.getPackageName();
Class r = null;
int[] ids = null;
try {
r = Class.forName(packageName + ".R");
Class[] classes = r.getClasses();
Class desireClass = null;
for (int i = 0; i < classes.length; ++i) {
if (classes[i].getName().split("\\$")[1].equals(className)) {
desireClass = classes[i];
break;
}
}
if ((desireClass != null) && (desireClass.getField(name).get(desireClass) != null) && (desireClass.getField(name).get(desireClass).getClass().isArray()))
ids = (int[])desireClass.getField(name).get(desireClass);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return ids;
}
}
然后在 获取控件时 不要用R.id.webView 直接拿,那样是拿不到的,
要这样拿 this.mWebView = (WebView)findViewById(m.getIdByName(this, "id","webView"));
- 关于unity在android层访问WebView的一点心得
- 关于在html中加注释的一点小小心得
- 关于线程的一点心得
- 关于管理的一点心得
- 关于call_user_func的一点心得
- 关于“日志”的一点心得
- 关于 Quaternion 的一点心得
- 关于指针的一点心得
- 一点关于位图的心得
- 关于随机数的一点心得
- 关于scanf的一点心得。
- 关于JS的一点心得
- 关于CBitmap的一点心得
- 关于android多任务同时下载的一点心得
- 关于做Android+JavaEE系统集成开发的一点心得
- 关于做android+J2ee系统集成开发的一点心得
- 关于做android+J2ee系统集成开发的一点心得
- 关于做android+J2ee系统集成开发的一点心得
- 【matlab 图像处理】MATLAB中图像处理的函数
- Linux中的定时任务at、crontab
- maven 一键上传 jar 包到私服(命令行)
- Mysql聚合函数的使用
- 算法题/数字在排序数组中出现的次数
- 关于unity在android层访问WebView的一点心得
- SIFT特征提取算法
- 【Log历练手册】Lomok StackOverflowError
- poj 2251
- iOS-去掉定位地址中不准确的楼层信息
- 02:计算(a+b)*c的值
- 第121届中国进出口商品交易会(广交会)-第一期会刊(参展商名录)
- 推荐系统老司机的十条经验节选
- 你应该使用Django admin的9个理由