-
調(diào)用Android系統(tǒng)“應(yīng)用程序信息(Application Info)”界面
大致如下:如果不想細(xì)看骂倘,直接調(diào)到后面,即可有現(xiàn)成的代碼0_0讲仰。
應(yīng)用設(shè)置
到了這個(gè)頁面,就可以做很多的事了碴卧,比如打開開機(jī)啟動(dòng)等等。
那么如何進(jìn)入這個(gè)頁面呢乃正?
我們只要以android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS作為Action住册;“package:應(yīng)用程序的包名”作為URI,就可以用startActivity啟動(dòng)應(yīng)用程序信息界面了烫葬。代碼如下:
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
startActivity(intent);
但是界弧,在Android 2.3之前的版本,并沒有公開相關(guān)的接口搭综。
我們可以分別看到Android2.1和Android2.2的應(yīng)用管理程序(ManageApplications.java)是如何啟動(dòng)InstalledAppDetails的:
// utility method used to start sub activity
private void startApplicationDetailsActivity() {
// 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);
}
而對于2.2與2.1常量APP_PKG_NAME的定義并不相同垢箕,在2.2中定義為”pkg”,在2.1中定義為”com.android.settings.ApplicationPkgName”
因此兑巾,對于2.1及以下版本条获,我們可以這樣調(diào)用InstalledAppDetails:
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的第一個(gè)參數(shù)為”pkg”蒋歌。
綜上帅掘,通用的調(diào)用“應(yīng)用程序信息”的代碼如下:
private static final String SCHEME = "package";
/**
* 調(diào)用系統(tǒng)InstalledAppDetails界面所需的Extra名稱(用于Android 2.1及之前版本)
*/
private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";
/**
* 調(diào)用系統(tǒng)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";
/**
* 調(diào)用系統(tǒng)InstalledAppDetails界面顯示已安裝應(yīng)用程序的詳細(xì)信息。 對于Android 2.3(Api Level
* 9)以上堂油,使用SDK提供的接口修档; 2.3以下,使用非公開的接口(查看InstalledAppDetails源碼)府框。
*
* @param context
*
* @param packageName
* 應(yīng)用程序的包名
*/
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);
}
打開應(yīng)用:
if(FileTypeUtils.isApk(path) && isApkInstalled(path)) {
//已安裝apk--->just open the app instead of install it
String packageName1 = ApkUtils.getApkPackageName(getContext(), path);
Intent it = getActivity().getPackageManager().getLaunchIntentForPackage(packageName1);
startActivity(it);
}else {
//path 是應(yīng)用路徑
Intent it = new Intent(Intent.ACTION_VIEW);
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
it.setDataAndType(Uri.fromFile(new File(path)), getMIMEType(path));
context.startActivity(it);
}
卸載應(yīng)用
String packageName = ApkUtils.getApkPackageName(getContext(), path);
Uri packageUri = Uri.parse("package:" + packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageUri);
startActivity(uninstallIntent);
補(bǔ)充
最后附上一些常用的設(shè)置描述,具體的說明都在android.provider.Settings.java這個(gè)類里面
打開這些界面就非常的容易了:
//比如打開網(wǎng)絡(luò)設(shè)置頁面
Intent intent=null;
//判斷手機(jī)系統(tǒng)的版本 即API大于10 就是3.0或以上版本
if(android.os.Build.VERSION.SDK_INT>10){
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent = new Intent();
ComponentName component = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");
intent.setComponent(component); intent.setAction("android.intent.action.VIEW");
}
context.startActivity(intent);
使用下面字段可以在軟件中直接打開相應(yīng)的系統(tǒng)界面
com.android.settings.AccessibilitySettings 輔助功能設(shè)置
com.android.settings.ActivityPicker 選擇活動(dòng)
com.android.settings.ApnSettings APN設(shè)置
com.android.settings.ApplicationSettings 應(yīng)用程序設(shè)置
com.android.settings.BandMode 設(shè)置GSM/UMTS波段
com.android.settings.BatteryInfo 電池信息
com.android.settings.DateTimeSettings 日期和壩上旅游網(wǎng)時(shí)間設(shè)置
com.android.settings.DateTimeSettingsSetupWizard 日期和時(shí)間設(shè)置
com.android.settings.DevelopmentSettings 應(yīng)用程序設(shè)置=》開發(fā)設(shè)置
com.android.settings.DeviceAdminSettings 設(shè)備管理器
com.android.settings.DeviceInfoSettings 關(guān)于手機(jī)
com.android.settings.Display 顯示——設(shè)置顯示字體大小及預(yù)覽
com.android.settings.DisplaySettings 顯示設(shè)置
com.android.settings.DockSettings 底座設(shè)置
com.android.settings.IccLockSettings SIM卡鎖定設(shè)置
com.android.settings.InstalledAppDetails 語言和鍵盤設(shè)置
com.android.settings.LanguageSettings 語言和鍵盤設(shè)置
com.android.settings.LocalePicker 選擇手機(jī)語言
com.android.settings.LocalePickerInSetupWizard 選擇手機(jī)語言
com.android.settings.ManageApplications 已下載(安裝)軟件列表
com.android.settings.MasterClear 恢復(fù)出廠設(shè)置
com.android.settings.MediaFormat 格式化手機(jī)閃存
com.android.settings.PhysicalKeyboardSettings 設(shè)置鍵盤
com.android.settings.PrivacySettings 隱私設(shè)置
com.android.settings.ProxySelector 代理設(shè)置
com.android.settings.RadioInfo 手機(jī)信息
com.android.settings.RunningServices 正在運(yùn)行的程序(服務(wù))
com.android.settings.SecuritySettings 位置和安全設(shè)置
com.android.settings.Settings 系統(tǒng)設(shè)置
com.android.settings.SettingsSafetyLegalActivity 安全信息
com.android.settings.SoundSettings 聲音設(shè)置
com.android.settings.TestingSettings 測試——顯示手機(jī)信息系宜、電池信息照激、使用情況統(tǒng)計(jì)、Wifi information盹牧、服務(wù)信息
com.android.settings.TetherSettings 綁定與便攜式熱點(diǎn)
com.android.settings.TextToSpeechSettings 文字轉(zhuǎn)語音設(shè)置
com.android.settings.UsageStats 使用情況統(tǒng)計(jì)
com.android.settings.UserDictionarySettings 用戶詞典
com.android.settings.VoiceInputOutputSettings 語音輸入與輸出設(shè)置
com.android.settings.WirelessSettings 無線和網(wǎng)絡(luò)設(shè)置