本应用程序中,访问第三方应用程序的资源 防止访问16位应用程序

在一个应用程序中,可以通过"远程context对象"来获得第三方软件的资源,如layout等等。
那么什么是远程context对象呢?
Activity有一个createPackageContext方法(实际上是ContextWrapper对象的,具体怎么样,可以查看Activity的集成树)
该方法的实际详情如下:
Context createPackageContext(String packageName,int flags) ,
通过该方法,可以按制定的packageName 和指定的创建方式,创建一个远程Context对象,然后利用此Context对象即可操作第三方应用的资源。
为了方便大家的理解,下面将以代码的形式展示一下具体的访问过程。
public static String PACKNAME_PATH = "XXX.XXX.XXX";
//目的访问路径,即需要创建远程context的目标路径

private boolean checkPathExist() {
PackageInfo packageInfo;
try {
packageInfo =this.getPackageManager().getPackageInfo(PACKNAME_PATH, 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();

}

return packageInfo != null;
本应用程序中,访问第三方应用程序的资源 防止访问16位应用程序
}


//下面为获取应用程序的片段
if(checkPathExist()){//当第三方应用程序存在
ContextremoteContext = null; //远程Context对象
try {
remoteContext =mContext.createPackageContext(PACKNAME_PATH,
Context.CONTEXT_IGNORE_SECURITY |Context.CONTEXT_INCLUDE_CODE);
//通过制定的路径,以忽略安全及包含代码的方式创建远程context对象
//mContext 为当前的Context对象
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 忽略安全问题
LayoutInflater inflater =LayoutInflater.from(remoteContext);//初始化布局加载器
Resources resources =remoteContext.getResources();//获得远程资源对象管理器
//获得第三方应用的布局文件id
int resourceId = resources.getIdentifier("main","layout",PACKNAME_PATH);
//通过布局加载器和第三方应用的布局文件id创建view
View view = inflater.inflate(resourceId, null);
//为当前的应用程序创建view,此时,应用程序显示的界面,即是第三方应用的界面
setContextView(view);
}



  

爱华网本文地址 » http://www.aihuau.com/a/25101010/32449.html

更多阅读

三极管开关电路中,be间串联电阻的作用 电阻电感电容串联电路

三极管B-E间电阻不是限流更不是分压,主要作用是给三极管一个偏置,作为数字电路的输出驱动,三极管通常只是工作在截止或饱和导通状态的,饱和是好实现的,因为当Ibe * β 远大于三极管的饱和电流时三极管自然处于饱和状态,但截止则是相对的,因

声明:《本应用程序中,访问第三方应用程序的资源 防止访问16位应用程序》为网友鬼柏分享!如侵犯到您的合法权益请联系我们删除