編輯:關於Android編程
使用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.addAssetPath(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,避免了反射調用的麻煩。
本文實例介紹了Android廣告輪播圖效果實現方法,分享給大家供大家參考,具體內容如下首先看下一下布局文件:<RelativeLayout xmlns:androi
本文實例講述了Android持久化技術之SharedPreferences存儲。分享給大家供大家參考,具體如下:1、SharedPreferences存儲在前面一篇文章《
為大家提供的MySQL忘記密碼的解決方案,供大家參考,具體內容如下1.在操作系統windows操作系統,xp或win7.中進入如下目錄:復制代碼 代碼如下:C:\User
1、修改hosts文件,這個方法操作簡單,但經常失靈,或許運氣不好吧。 首先更新host文件,如圖,打開目錄 C:WindowsSystem32driverse