http://blog.csdn.net/wangshione/article/details/6062359
分类: Android技术 2010-12-08 10:29 508人阅读 收藏 举报
Android中有Context的概念,想必大家都知道。Context可以做很多事情,打开activity、发送广播、打开本包下文件夹和数据库、获取classLoader、获取资源等等。如果我们得到了一个包的Context对象,那我们基本上可以做这个包自己能做的大部分事情。
那我们能得到吗?很高兴的告诉你,能!
Context有个createPackageContext方法,可以创建另外一个包的上下文,这个实例不同于它本身的Context实例,但是功能是一样的。
这个方法有两个参数:
1。packageName 包名,要得到Context的包名
2。flags 标志位,有CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY两个选项。CONTEXT_INCLUDE_CODE的意思是包括代码,也就是说可以执行这个包里面的代码。CONTEXT_IGNORE_SECURITY的意思是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。
下面给个小例子,执行另外一个包里面的某个类的方法。
另外一个包的包名是chroya.demo,类名Main,方法名print,代码如下:
-
package chroya.demo;
-
-
import android.app.Activity;
-
import android.os.Bundle;
-
import android.util.Log;
-
-
class Main extends Activity {
-
-
@Override
-
public void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
}
-
-
public void print(String msg) {
-
Log.d("Main", "msg:"+ msg);
-
}
-
}
本包的调用Main的print方法的代码块如下:
-
Context c = createPackageContext("chroya.demo", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
-
-
Class clazz = c.getClassLoader().loadClass("chroya.demo.Main");
-
-
Object owner = clazz.newInstance();
-
-
Object obj = clazz.getMethod("print", String.class).invoke(owner, "Hello");
ok,这样,我们就调用了chroya.demo包的Main类的print方法,执行结果,打印出了Hello。
怎么样,这只是一个调用其他包的代码的例子,我们获取到Context,还可以做很多事情,当然,题目所说的坏事,还是不要做为好。
分享到:
相关推荐
Context有个createPackageContext方法,可以创建另外一个包的上下文,这个实例不同于它本身的Context实例,但是功能是一样的。 这个方法有两个参数:1。packageName 包名,要得到Context的包名2。flags 标志位,有...
通过反射获取Context实例,可以用于工具类.让代码更加简洁清晰
利用反射实现Toast集成一个工具类的使用
主要介绍了Android全局获取Context实例详解的相关资料,需要的朋友可以参考下
主要介绍了Android编程获取全局Context的方法,实例分析了基于Application类获取全局Context的实现步骤与相关技巧,需要的朋友可以参考下
/** * 广播接受者 */ class BatteryReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //判断它是否是为电量变化的...
本文实例讲述了Android编程实现全局获取Context及使用Intent传递对象的方法。分享给大家供大家参考,具体如下: 一、全局获取 Context Android 开发中很多地方需要用到 Context,比如弹出 Toast、启动活动、发送广播...
主要介绍了Android中的Context抽象类,包括Context的实例化与获取App的Context等方法,需要的朋友可以参考下
2、主要接口:getTelephonyInfo(Context context), 获取TelephonyInfo实例,里面封装了各种sim卡信息; updateTelephonyInfo(Context context), 更新TelephonyInfo实例信息; getDualSimChip(Context context), 获取...
通过设置全局获取栈顶对象 ,从而进行各种需要activity 对象的实例操作,进行相关操作通过设置全局获取栈顶对象 ,从而进行各种需要activity 对象的实例操作,进行相关操作通过设置全局获取栈顶对象 ,从而进行各种...
在开发Android的过程中,总是能遇见Context类或者它的实例.Context类的实例经常被用来提供“应用程序”的引用,下面举例说明Contex类实例详解
获取整个屏幕的宽度的实例 Point p = new Point(); //获取窗口管理器 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); wm.getDefaultDisplay().getSize(p); screenWidth = ...
本文实例讲述了Android编程实现通过反射获取资源Id的方法。分享给大家供大家参考,具体如下: 在将自己写的工具打成.jar包的时候,有时候会需要引用到res中的资源,这时候不能将资源一起打包,只能通过反射机制动态的...
本文实例讲述了Android编程实现获取系统内存、CPU使用率及状态栏高度的方法。分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader...
在应用的Application的onCreate()中添加如下代码(主要是为了省却后面要传入Context参数的麻烦) AnyPref.init(this); 1. 读写实例对象 假设有一个Sample类(所有注解都是非必须的) @PrefModel("prefName")//...
本文实例讲述了android获取当前运行Activity名字的方法,可以避免即时聊天再出现通知的情况。分享给大家供大家参考。具体方法如下: 最近在做IM时需要知道当前Activity是哪一个Activity.自己整理一下两种方法 第一种...
本文实例讲述了Android实现获取签名及公钥的方法。分享给大家供大家参考。具体如下: 1. java代码如下: private byte[] getSign(Context context) { PackageManager pm = context.getPackageManager(); List...