使用android 隐藏api的前提:我们需要得到Android系统源码编译输出的一个文件
out\\target\\common\\obj\\JAVA_LIBRARIES\\framework_intermediates\\classes.jar
这个包里面包含所有的系统api, 隐藏的, 公开的
添加 jar方法
右键功能菜单->Properties->Java Build Path

Libraries选项卡
这时应该有一个列表, 如果你没有添加过, 应该只有一项, 就是系统自带的Android SDK, 选中后,右手边有一个删除, 先删除系统添加的sdk.

点Add Library -> User Library

选择User Library 按钮, 新建一个User Library 将刚才那个文件 classes.jar 和系统本身的文件都导入进来, 调整下顺序, 将 classes.jar 调到前面
这样添加了之后, 就可以使用系统隐藏的api了

使用隐藏api, 有个前提:
许多api涉及到系统权限问题, 比如 后台安装文件 api PackageManager.installPackage 要求有安装程序的权限, 而这个安装程序安装程序权限不是随便有的, 只有经ROM签名认证的才可以使用这个权限. 虽然说可以在配置文件里面添加这个权限, 但是悲剧的是你仍然不能拥有这个权限, 在这点上, Google做的真绝..

好了, 虽然我们不能安装, 但用api去查看apk总该可以了吧?
Google没有公开这个Api, 但又了上面这个方法, 我们可以使用了 //apk包的文件路径
String apkPath =
\"/sdcard/qq.apk\";
//这是一个Package 解释器, 是隐藏的
//构造函数的参数只有一个, apk文件的路径
PackageParser packageParser =
new PackageParser(apkPath);

//这个是与显示有关的, 里面涉及到一些像素显示等等, 我们使用默认的情况
DisplayMetrics metrics =
new DisplayMetrics();
metrics.setToDefaults();
//这里就是解析了, 四个参数,
//源文件File,
//目的文件路径
//显示, DisplayMetrics metrics
//flags
PackageParser.Package mPkgInfo = packageParser.parsePackage(new File(apkPath),
apkPath, metrics, 0);


//应用程序信息包, 这个公开的, 不过有些函数, 变量没公开
ApplicationInfo info = mPkgInfo.applicationInfo;

//Resources 是用来获取资源的 , 而这里获取的资源是在本程序之外的
Resources pRes = getResources();
AssetManager assmgr =
new AssetManager();
assmgr.addAss
etPath(apkPath);//这个方法是隐藏的,若非调用隐藏API,要反射才能调用
Resources res =
new Resources(assmgr, pRes.getDisplayMetrics(), pRes.getConfiguration());


CharSequence label =
null;
if (info.labelRes !=
0) {
try {
label = res.getText(info.labelRes);
} catch (Resources.NotFoundException e) {
}
}
if (label ==
null) {
label = (info.nonLocalizedLabel !=
null) ?
info.nonLocalizedLabel : info.packageName;
}


//这里就是读取一个apk程序的图标

if (info.icon !=
0){
Drawable icon = res.getDrawable(info.icon);
ImageView image = (ImageView) findViewById(R.id.iv_test);
image.setVisibility(View.VISIBLE);
image.setImageDrawable(icon);
}
}

=============================================

ps:通过使用隐藏API,避免了反射调用的麻烦。

更多相关文章

  1. android 5 设置图案锁,锁屏界面进入相机拍照、查看锁定的照片后,退
  2. Android(安卓)studio中导出jar包
  3. ubuntu16.04 + Qt5.13 搭建安卓开发环境
  4. Android(安卓)6.0动态权限及跳转GPS设置界面
  5. Android(安卓)SharedPreferences 详解 源码解析
  6. Android仿网易新闻图片详情下滑隐藏效果示例代码
  7. Android(安卓)pcm文件播放方法(AudioTrack)
  8. Android(安卓)dex分包方案
  9. Android中SharedPreferences存储数据

随机推荐

  1. Android里的SparseArray
  2. Android热更新之AndFix就是个大坑
  3. Android学习路线(转)
  4. Android(安卓)GridLayout 动态添加子控件
  5. android加载大图推荐框架LargeImageView
  6. Android(安卓)PC投屏简单尝试(录屏直播)2
  7. VS2015开发Android,自带模拟器无法调试、
  8. 慎用原生MediaPlayer类播放音频
  9. Android(安卓)JNI编程(七)——使用AndroidS
  10. android 机器耗电