android如何从应用程序进入设置的各个页面

  1. 调用Android系统“应用程序信息(Application Info)”界面
    大致如下:如果不想细看,直接调到后面,即可有现成的代码0_0。


应用设置

到了这个页面,就可以做很多的事了,比如打开开机启动等等。
那么如何进入这个页面呢?
我们只要以android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS作为Action;“package:应用程序的包名”作为URI,就可以用startActivity启动应用程序信息界面了。代码如下:

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

但是,在Android 2.3之前的版本,并没有公开相关的接口。
我们可以分别看到Android2.1和Android2.2的应用管理程序(ManageApplications.java)是如何启动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及以下版本,我们可以这样调用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的第一个参数为”pkg”。

综上,通用的调用“应用程序信息”的代码如下:

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);
}

打开应用:


                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 是应用路径
                   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);
                }

卸载应用

               String packageName = ApkUtils.getApkPackageName(getContext(), path);
                Uri packageUri = Uri.parse("package:" + packageName);
                Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageUri);
                startActivity(uninstallIntent);

补充

最后附上一些常用的设置描述,具体的说明都在android.provider.Settings.java这个类里面
打开这些界面就非常的容易了:

//比如打开网络设置页面
 Intent intent=null;
 //判断手机系统的版本  即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);

使用下面字段可以在软件中直接打开相应的系统界面

com.android.settings.AccessibilitySettings 辅助功能设置
  com.android.settings.ActivityPicker 选择活动
  com.android.settings.ApnSettings APN设置
  com.android.settings.ApplicationSettings 应用程序设置
  com.android.settings.BandMode 设置GSM/UMTS波段
  com.android.settings.BatteryInfo 电池信息
  com.android.settings.DateTimeSettings 日期和坝上旅游网时间设置
  com.android.settings.DateTimeSettingsSetupWizard 日期和时间设置
  com.android.settings.DevelopmentSettings 应用程序设置=》开发设置
  com.android.settings.DeviceAdminSettings 设备管理器
  com.android.settings.DeviceInfoSettings 关于手机
  com.android.settings.Display 显示——设置显示字体大小及预览
  com.android.settings.DisplaySettings 显示设置
  com.android.settings.DockSettings 底座设置
  com.android.settings.IccLockSettings SIM卡锁定设置
  com.android.settings.InstalledAppDetails 语言和键盘设置
  com.android.settings.LanguageSettings 语言和键盘设置
  com.android.settings.LocalePicker 选择手机语言
  com.android.settings.LocalePickerInSetupWizard 选择手机语言
  com.android.settings.ManageApplications 已下载(安装)软件列表
  com.android.settings.MasterClear 恢复出厂设置
  com.android.settings.MediaFormat 格式化手机闪存
  com.android.settings.PhysicalKeyboardSettings 设置键盘
  com.android.settings.PrivacySettings 隐私设置
  com.android.settings.ProxySelector 代理设置
  com.android.settings.RadioInfo 手机信息
  com.android.settings.RunningServices 正在运行的程序(服务)
  com.android.settings.SecuritySettings 位置和安全设置
  com.android.settings.Settings 系统设置
  com.android.settings.SettingsSafetyLegalActivity 安全信息
  com.android.settings.SoundSettings 声音设置
  com.android.settings.TestingSettings 测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息
  com.android.settings.TetherSettings 绑定与便携式热点
  com.android.settings.TextToSpeechSettings 文字转语音设置
  com.android.settings.UsageStats 使用情况统计
  com.android.settings.UserDictionarySettings 用户词典
  com.android.settings.VoiceInputOutputSettings 语音输入与输出设置
  com.android.settings.WirelessSettings 无线和网络设置

参考:

http://blog.csdn.net/zhengzhiren/article/details/6159750

android如何从应用程序进入设置的各个页面

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容