返回顶部
首页 > 资讯 > 移动开发 >详解Android 7.0 Settings 加载选项
  • 325
分享到

详解Android 7.0 Settings 加载选项

Android 2022-06-06 04:06:40 325人浏览 泡泡鱼
摘要

先写在前面,这说的Settings加载选项是指Settings这个应用显示在主界面的选项,这个修改需要对系统源码进行修改。 Android 7.0 Settings顶部多了一个

先写在前面,这说的Settings加载选项是指Settings这个应用显示在主界面的选项,这个修改需要对系统源码进行修改。

Android 7.0 Settings顶部多了一个建议选项,多了个侧边栏,操作更加便捷了。

原生7.0主界面      原生7.0侧边栏

                  原生7.0主界面                                                          原生7.0侧边栏

Android 6.0

之前做Android 6.0开发的,都会了解到6.0的Settings加载选项是通过加载dashboard_cateGories.xml,获取需要显示的选项,并且在SettingsActivity中也进行判断是否要显示,所以在6.0上添加一个选项是比较简单的,直接在dashboard_categories.xml添加icon、title、summary,也可以添加目标fragment和Intent,这样就可以顺利跳转到对应的界面了。但是在7.0上,google对Settings进行了重构。

Android 7.0

7.0的Settings的选项不再从dashboard_categories.xml中加载选项列表,而是通过在Androidmanifest.xml中,配置intent-filter的Action,在通过PackageManager进行指定的Action进行搜索,那么就可以获取到需要显示的选项列表了,并且也需要在代码中进行判断,判断哪些功能需要显示与否。

TileUtils.Java中通过几个Action进行获取系统中对应的activity,如Settings中的几个


private static final String SETTINGS_ACTION ="com.android.settings.action.SETTINGS";
private static final String OPERATOR_SETTINGS ="com.android.settings.OPERATOR_APPLICATION_SETTING";
private static final String OPERATOR_DEFAULT_CATEGORY ="com.android.settings.category.wireless";
private static final String MANUFACTURER_SETTINGS ="com.android.settings.MANUFACTURER_APPLICATION_SETTING";
private static final String MANUFACTURER_DEFAULT_CATEGORY ="com.android.settings.category.device";

通过PackageManager进行搜索,获取到这一系列的activity信息,


PackageManager pm = context.getPackageManager();
List<ResolveInfo> results = pm.queryIntentActivitiesAsUser(intent,PackageManager.GET_META_DATA, user.getIdentifier());

并且在AndroidManifest.xml通过meta-data配置了icon、title、summary,那这就有Settings中显示的图标、标题和说明。还有在Settings中显示的分类、目标Fragment。

Settings 的AndroidManifest.xml 下面那代码是Settings->about phone的Activity配置。


<activity android:name="Settings$DeviceInfoSettingsActivity"
        android:theme="@style/Theme.SubSettingsDialogWhenLarge"
        android:label="@string/device_info_settings"
        android:icon="@drawable/ic_settings_about"
        android:taskAffinity="com.android.settings"
        android:parentActivityName="Settings">
      <intent-filter android:priority="1">
        <action android:name="android.settings.DEVICE_INFO_SETTINGS" />
        <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.MaiN" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.VOICE_LAUNCH" />
      </intent-filter>
      <intent-filter android:priority="-1">
        <action android:name="com.android.settings.action.SETTINGS" />
      </intent-filter>
      <meta-data android:name="com.android.settings.category"
        android:value="com.android.settings.category.system" />
      <meta-data android:name="com.android.settings.title"
        android:resource="@string/about_settings" />
      <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
        android:value="com.android.settings.DeviceInfoSettings" />
      <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
        android:value="true" />
    </activity>

Settings显示各选项的思路比较简单,所以直接在Settings里面添加功能选项还是比较简单的。

添加第三方apk到Settings选项中

如果需要Settings中添加打包好的apk,需要三个步骤。

1. 添加action。

可以被PackageManager搜索到的activity,搜索到后添加到Settings的选项列表中

代码如下:
private static final String EXTRA_SETTINGS_ACTION ="com.android.settings.action.EXTRA_SETTINGS";

1、添加显示的选项信息。

在该apk的AndroidManifest.xml对应的启动activity中添加以下meta-data。最好是有该apk提供公司的技术支持,不然有混淆的代码就比较难进行更改、回编译了。


  
  private static final String EXTRA_CATEGORY_KEY = "com.android.settings.category";
  
  public static final String META_DATA_PREFERENCE_ICON = "com.android.settings.icon";
  
  public static final String META_DATA_PREFERENCE_TITLE = "com.android.settings.title";
  
  public static final String META_DATA_PREFERENCE_SUMMARY = "com.android.settings.summary";

在TileUtils.java的白名单中添加对应的包名。

这个也是Android考虑到的一些安全上的问题,没有添加到白名单上面的包名,就不会显示出来。


  /// Extra package white list for add item to Settings @{
  private static final String[] EXTRA_PACKAGE_WHITE_LIST = {};
  /// @}

最后就是全编,刷机验证了。

相比android6.0,在7.0上添加功能选项显得更简单了,只需要写好了功能,在Settings的AndroidManifest.xml中添加必要的参数,或者是在独立的apk中AndroidManifest.xml中配置必要的参数,再在TileUtils.java中添加包名就好了。需要修改的地方更少了,并且Google将很方方法放到了com.android.settinglibs里,精简了一部分代码。

您可能感兴趣的文章:如何获取Android设备挂载的所有存储器android中使用SharedPreferences进行数据存储的操作方法Android调用相机并将照片存储到sd卡上实现方法Android App将数据写入内部存储和外部存储的示例Android 数据存储方式有哪几种Android编程中的5种数据存储方式Android7.0版本影响开发的改进分析Android 7.0新特性详解Android 7.0中拍照和图片裁剪适配的问题详解Android 7.0调用相机崩溃详解及解决办法Android 7.0 Nougat不得不知的11项新功能Android 7.0开发获取存储设备信息的方法


--结束END--

本文标题: 详解Android 7.0 Settings 加载选项

本文链接: https://lsjlt.com/news/22318.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作