美文网首页安卓
android如何从应用程序进入设置的各个页面

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

作者: 流水潺湲 | 来源:发表于2018-04-20 17:37 被阅读379次
  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如何从应用程序进入设置的各个页面

相关文章

网友评论

    本文标题:android如何从应用程序进入设置的各个页面

    本文链接:https://www.haomeiwen.com/subject/xajzkftx.html