`
zhifeiji512
  • 浏览: 115657 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android获取其他包的Context实例

 
阅读更多

      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的意思是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。

       本包的调用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);
	}
}
 
      下面给个小例子,执行另外一个包里面的某个类的方法。
      另外一个包的包名是chroya.demo,类名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();
//获取print方法,传入参数并执行
Object obj = clazz.getMethod("print", String.class).invoke(owner, "Hello");
 

       ok,这样,我们就调用了chroya.demo包的Main类的print方法,执行结果,打印出了Hello。

      怎么样,这只是一个调用其他包的代码的例子,我们获取到Context,还可以做很多事情,当然,题目所说的坏事,还是不要做为好。

 

转自:http://blog.csdn.net/wangshione/article/details/6062359

分享到:
评论

相关推荐

    Android获取其他包的Context实例代码

    Context有个createPackageContext方法,可以创建另外一个包的上下文,这个实例不同于它本身的Context实例,但是功能是一样的。 这个方法有两个参数:1。packageName 包名,要得到Context的包名2。flags 标志位,有...

    通过反射获取Context实例的Demo

    通过反射获取Context实例,可以用于工具类.让代码更加简洁清晰

    反射获取Context的实例

    利用反射实现Toast集成一个工具类的使用

    Android全局获取Context实例详解

    主要介绍了Android全局获取Context实例详解的相关资料,需要的朋友可以参考下

    Android编程获取全局Context的方法

    主要介绍了Android编程获取全局Context的方法,实例分析了基于Application类获取全局Context的实现步骤与相关技巧,需要的朋友可以参考下

    Android中获取电池电量实例代码

    /** * 广播接受者 */ class BatteryReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //判断它是否是为电量变化的...

    Android编程实现全局获取Context及使用Intent传递对象的方法详解

    本文实例讲述了Android编程实现全局获取Context及使用Intent传递对象的方法。分享给大家供大家参考,具体如下: 一、全局获取 Context Android 开发中很多地方需要用到 Context,比如弹出 Toast、启动活动、发送广播...

    详解Android中的Context抽象类

    主要介绍了Android中的Context抽象类,包括Context的实例化与获取App的Context等方法,需要的朋友可以参考下

    Android代码-DualSimInfo

    2、主要接口:getTelephonyInfo(Context context), 获取TelephonyInfo实例,里面封装了各种sim卡信息; updateTelephonyInfo(Context context), 更新TelephonyInfo实例信息; getDualSimChip(Context context), 获取...

    全局获取Activity对象

    通过设置全局获取栈顶对象 ,从而进行各种需要activity 对象的实例操作,进行相关操作通过设置全局获取栈顶对象 ,从而进行各种需要activity 对象的实例操作,进行相关操作通过设置全局获取栈顶对象 ,从而进行各种...

    安卓Android Context类实例详解

    在开发Android的过程中,总是能遇见Context类或者它的实例.Context类的实例经常被用来提供“应用程序”的引用,下面举例说明Contex类实例详解

    Android Studio 中获取屏幕宽度实例

    获取整个屏幕的宽度的实例 Point p = new Point(); //获取窗口管理器 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); wm.getDefaultDisplay().getSize(p); screenWidth = ...

    Android编程实现通过反射获取资源Id的方法

    本文实例讲述了Android编程实现通过反射获取资源Id的方法。分享给大家供大家参考,具体如下: 在将自己写的工具打成.jar包的时候,有时候会需要引用到res中的资源,这时候不能将资源一起打包,只能通过反射机制动态的...

    Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例

    本文实例讲述了Android编程实现获取系统内存、CPU使用率及状态栏高度的方法。分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader...

    Android代码-SharedPreferences实用工具类,可直接保存与读取实例对象,SharedPreferences中的ORM

    在应用的Application的onCreate()中添加如下代码(主要是为了省却后面要传入Context参数的麻烦) AnyPref.init(this); 1. 读写实例对象 假设有一个Sample类(所有注解都是非必须的) @PrefModel("prefName")//...

    android获取当前运行Activity名字的方法

    本文实例讲述了android获取当前运行Activity名字的方法,可以避免即时聊天再出现通知的情况。分享给大家供大家参考。具体方法如下: 最近在做IM时需要知道当前Activity是哪一个Activity.自己整理一下两种方法 第一种...

    Android实现获取签名及公钥的方法

    本文实例讲述了Android实现获取签名及公钥的方法。分享给大家供大家参考。具体如下: 1. java代码如下:  private byte[] getSign(Context context) { PackageManager pm = context.getPackageManager(); List...

Global site tag (gtag.js) - Google Analytics