當前位置:首頁 » 安卓系統 » android信息代碼

android信息代碼

發布時間: 2025-06-25 19:40:57

A. 如何調用Android系統程序詳細信息界面

調用Android系統「應用程序信息(Application Info)」界面「Android系統設置->應用程序->管理應用程序」列表下,列出了系統已安裝的應用程序。選擇其中一個程序,則進入「應用程序信息(Application Info)」界面。這個界面顯示了程序名稱、版本、存儲、許可權等信息,並有卸載、停止、清除緩存等按鈕,可謂功能不少。如果在編寫相關程序時(比如任務管理器)可以調用這個面板,自然提供了很大的方便。那麼如何實現呢?

在最新的Android SDK 2.3(API Level 9)中,提供了這樣的介面。在文檔路徑

docs/reference/android/provider/Settings.html#ACTION_APPLICATION_DETAILS_SETTINGS

下,有這樣的描述:

public static final String ACTION_APPLICATION_DETAILS_SETTINGS Since: API Level 9

Activity Action: Show screen of details about a particular application.
In some cases, a matching Activity may not exist, so ensure you safeguard against this.
Input: The Intent's data URI specifies the application package name to be shown, with the "package" scheme. That is "package:com.my.app".
Output: Nothing.
Constant Value: "android.settings.APPLICATION_DETAILS_SETTINGS"

就是說,我們只要以android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS作為Action;「package:應用程序的包名」作為URI,就可以用startActivity啟動應用程序信息界面了。代碼如下:

view plain
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
startActivity(intent);

但是,在Android 2.3之前的版本,並沒有公開相關的介面。
通過查看系統設置platform/packages/apps/Settings.git程序的源碼,可以發現應用程序信息界面為InstalledAppDetails。
在這里(2.1)還有這里(2.2),我們可以分別看到Android2.1和Android2.2的應用管理程序(ManageApplications.java)是如何啟動InstalledAppDetails的。
view plain
// utility method used to start sub activity
private void () {
// Create intent to start new activity
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClass(this, InstalledAppDetails.class);
intent.putExtra(APP_PKG_NAME, mCurrentPkgName);
// start new activity to display extended information
startActivityForResult(intent, INSTALLED_APP_DETAILS);
}

但是常量APP_PKG_NAME的定義並不相同。
2.2中定義為"pkg",2.1中定義為"com.android.settings.ApplicationPkgName"
那麼,對於2.1及以下版本,我們可以這樣調用InstalledAppDetails:
view plain
Intent i = new Intent(Intent.ACTION_VIEW);
i.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
i.putExtra("com.android.settings.ApplicationPkgName", packageName);
startActivity(i);

對於2.2,只需替換上面putExtra的第一個參數為"pkg"

綜上,通用的調用「應用程序信息」的代碼如下:
view plain
private static final String SCHEME = "package";
/**
* 調用系統InstalledAppDetails界面所需的Extra名稱(用於Android 2.1及之前版本)
*/
private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";
/**
* 調用系統InstalledAppDetails界面所需的Extra名稱(用於Android 2.2)
*/
private static final String APP_PKG_NAME_22 = "pkg";
/**
* InstalledAppDetails所在包名
*/
private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";
/**
* InstalledAppDetails類名
*/
private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";
/**
* 調用系統InstalledAppDetails界面顯示已安裝應用程序的詳細信息。 對於Android 2.3(Api Level
* 9)以上,使用SDK提供的介面; 2.3以下,使用非公開的介面(查看InstalledAppDetails源碼)。
*
* @param context
*
* @param packageName
* 應用程序的包名
*/
public static void showInstalledAppDetails(Context context, String packageName) {
Intent intent = new Intent();
final int apiLevel = Build.VERSION.SDK_INT;
if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的介面
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
} else { // 2.3以下,使用非公開的介面(查看InstalledAppDetails源碼)
// 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。
final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22
: APP_PKG_NAME_21);
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName(APP_DETAILS_PACKAGE_NAME,
APP_DETAILS_CLASS_NAME);
intent.putExtra(appPkgName, packageName);
}
context.startActivity(intent);
}

B. 怎樣查看 Android APP源代碼

將apk文件拷貝至sdcard上。
命令順序如下:

進入Android sdk文件夾/tools目錄下
輸入adb shell
輸入su
輸入cd data
輸入cd app
這時就可以看到你安裝的所有的apk文件。輸入cp 空格 對應的apk 空格 /sdcard/
這樣就將apk文件拷貝出來了。
將apk文件後綴直接變成rar格式,可以看到熟悉的目錄結構了,

其中xml文件打開後都是二進制的,無法查看。
這時就用到了一個android4me的AXMLPrinter2工具。(請自行網路搜索)
輸入以下命令,將xml文件解析出來
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
將showtimes_list.xml生成xml文件,則輸入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml > h.xml
目前進行到這一步,只能看到xml文件的內容,其工程中的java源文件還是看不到,看目錄結構下有一個classes.dex文件,我們需要將dex文件變為jar文件。
這里用到了另一個工具dex2jar。(自行搜索下載)
在Windows下解壓之後的目錄如下圖所示:

在命令行中,進入到此目錄下:
在Windows下,輸入以下命令:
dex2jar.bat c:classes.dex
運行完之後,在C盤會多一個classes.dex.dex2jar.jar文件,此文件就是我們需要的jar文件。
利用jd-gui,將jar文件反向工程為java代碼。(請自行搜索下載)
它分為Windows、Linux、和max三個版本,這里我下載的是Windows版本的。
解壓之後,雙擊運行exe文件,選擇classes.dex.dex2jar.jar文件,相應的jar文件中的Java文件就被反向工程顯示出來了!

熱點內容
android音頻合成 發布:2025-06-25 23:55:26 瀏覽:157
網易版伺服器怎麼刷物品 發布:2025-06-25 23:55:25 瀏覽:479
扣扣會員伺服器地址 發布:2025-06-25 23:42:09 瀏覽:64
貪婪演算法簡單 發布:2025-06-25 23:42:04 瀏覽:141
單片機圖形化編程軟體 發布:2025-06-25 23:36:44 瀏覽:379
按緩存鍵黑屏 發布:2025-06-25 23:34:26 瀏覽:736
ug編程教程下載 發布:2025-06-25 23:33:31 瀏覽:434
給蘋果相冊加密 發布:2025-06-25 23:31:28 瀏覽:551
5s忘了訪問限制密碼怎麼辦 發布:2025-06-25 23:23:29 瀏覽:810
群暉網路存儲器 發布:2025-06-25 22:58:52 瀏覽:703