android将activity打成jar包供第三方调用,把Activity打包成jar供其App使用
写Resource反射工具类ResourceUtils:
public class ResourceUtils {
private static HashMap idMap = new HashMap();
/**
* 通过名称获取资源id
* @param context
* @param className
* 引用资源文件类型名称,eg id, drawable
* @param resName
* 资源文件名称
* @return
*/
public static int getResourceIdByName(Context context, String className, String resName) {
int id = 0;
try {
//Class> cla = Class.forName(context.getPackageName() + ".R$" + className);
//if (cla != null) {
//id = cla.getField(resName).getInt(cla);
//}
Class> cla = Class.forName(context.getPackageName()+".R");
Class[]clesses = cla.getClasses();
Class targetClass=null;
for (Class class1 : clesses) {
if(class1.getName().split("\\$")[1].equals(className)){
targetClass = class1;
break;
}
}
if(targetClass!=null){
id = targetClass.getField(resName).getInt(targetClass);
}
}catch(NoSuchFieldException e){
Log.e("Error", "no such file");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return id;
}
/**
* 通过名称获取view
* @param context
* @param parentView
* @param idName 组件的id名称
* @return
*/
public static View getViewById(Context context, View parentView, String idName) {
Integer id = idMap.get(idName);
if (id == null) {
id = getResourceIdByName(context, "id", idName);
idMap.put(idName, id);
return parentView.findViewById(id);
}
return parentView.findViewById(id);
}
}
需要打jar包的Activity,通过反射获取ResourceId
public class ImageActivity extends Activity {
private ImageView img_show1, img_show2;
private Button btn_show;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getApplication();
// 获取Resource名称反射获取获取layout的id
int activityId = ResourceUtils.getResourceIdByName(context, "layout",
"activity_image");
View view = View.inflate(context, activityId, null);
setContentView(view);
// 通过Resource的id反射获取ResourceID
img_show1 = (ImageView) ResourceUtils.getViewById(context, view,
"img_show1");
img_show2 = (ImageView) ResourceUtils.getViewById(context, view,
"img_show2");
btn_show = (Button) ResourceUtils
.getViewById(context, view, "btn_show");
btn_show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// 通过名称获取drawable的id
img_show1.setBackgroundResource(ResourceUtils
.getResourceIdByName(context, "drawable", "img01"));
img_show2.setBackgroundResource(ResourceUtils
.getResourceIdByName(context, "drawable", "img02"));
}
});
}
}
项目打包成jar,项目右键 - Export - 选择“jar” - 选择项目的“src” - 选择生成路径;
把jar复制到项目中,把打包jar的Activity需要的resource(drawable、layout)相关内容复制到项目中
调用的项目AndroidManifest.xml中添加 打包的Activity的名称;
调用jar中的Activity:
btn_goto_lib = (Button) findViewById(R.id.btn_goto_lib);
btn_goto_lib.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
try {
Intent intent = new Intent(MainActivity.this,
ImageActivity.class);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
android将activity打成jar包供第三方调用,把Activity打包成jar供其App使用相关推荐
- java jar反编译后保存_java根据jar包反编译后修改再打包回jar的做法
1. 得到一个待要修改的jar包 2. 我的环境是windows,然后解压这个jar包,得到一堆class文件,这时候就找到你需要的那个class文件 3. 我首先是使用jd-gui工具看一下这个cl ...
- java文件打包jar文件_如何把JAVA文件打包成jar文件
本文讲解了把java文件打包成jar文件的方法,经测试可行.由于作者没时间用批处理文件进行操作的方法没有列出来. (1)把一个java文件打包到当前目录 javac –d . *.java (2) ...
- idea中将java项目中的单个类打包成jar包
文章目录 打包jar包 导入jar包使用 JAR文件的全称是Java Archive File,即Java档案文件.JAR文件是一种压缩文件,与常见的ZIP压缩文件兼容,被称为JAR包.JAR文件与z ...
- [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目
(1)项目导入JAR包: 1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面. 2.右键点击项目,Bulid Path->Configure Build Path 3.在设置Libr ...
- java调用jar并传参,Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参
Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入 ...
- Android含资源文件引用的项目打包成jar包
一.发现问题 最近一个项目临到收尾,就差最后一步打包了~~ 但却遇到了一些小问题.这个项目里面用到Notification,用过notification的人都知道,notification必须设置小图 ...
- Android 将Android项目打包成aar文件并在其他项目中引用,打包成jar包
首先说一下jar包和aar包有什么区别? 1.打包之后生成的文件地址: *.jar:库/build/intermediates/bundles/debug(release)/classes.jar * ...
- java 程序包jar_把Java程序打包成jar文件包并执行
把Java程序打包成jar文件包并执行 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: ...
- python调用第三方接口获取数据_python 接口实现 供第三方调用的例子
python 接口实现 供第三方调用的例子 实验环境 1.环境问题 python 2.7 以上自带的pyunit bottle 作为一个python的简易服务器 在python安装目录 打开命令窗口( ...
最新文章
- POJ 1018 Communication System
- 联想x250为什么这么贵_为什么ThinkPad这么贵?
- SAP JAM活跃度统计
- CSS基础必备知识点01
- DotNetOpenAuth实践之Webform资源服务器配置
- 圆方树(bzoj 2125: 最短路)
- 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 2、Practice Questions...
- (第三场) C Shuffle Cards 【STL_rope || splay】
- 五、梯度分析与最优化
- 网络中的一些专业名词解释
- 一个软件完整的开发流程,不会程序也能自己制作手机App
- Python查询四六级成绩
- 行列式在计算机的应用,行列式的计算机及应用.doc
- 二战时图灵机破译的Enigma密码,现在AI仅需13分钟便可破译
- JAVA网站视频播放不了_java视频播放网站小结
- 【C语言】练习函数调用
- 气体灭火系统的发展历程
- L1-039 古风排版 (20 分)
- Google Play如何做ASO优化?影响搜索排名的主要因素.
- 文件IO实现图片的加密操作