我的私人博客:www.mrloveqin.top 可以查看更多内容

21. Settings内置选项在一级菜单fragment方式
① 在AndroidManifest.xml 添加如下代码

<!-- 这样写,然后在Settings中声明成Settings的内部类,从而不需要单独再写FlashSettingsActivity的实现类 FlashSettingsActivity 并不是一个Activity文件,只是一个SettingsActivity的子类,且是空实现。
之所以要加此空的Activity,是为了外部应用能直接跳转到FlashSettingsActivity界面,因为如果只是fragment的话,外部是没法跳转到fragment界面的,
跳转到FalshSettingsActivity时,会执行其父类SettingsActivity.java中的方法,并根据FlashSettingsActivity在清单文件中的注册信息,
它的meta-data的值,找到FlashSettingsActivity对应的fragment(FlashSettings),显示出fragment界面,实现借壳。如果<meta-data>中使用的是FRAGMENT_CLASS,一般都会声明成Settings的内部类即 <activity android:name="Settings$xxxActivity" > 的形式。注意此fragment是继承与settings中通用的SettingsPreferenceFragment,并不是一般的fragment类--><activity android:name="Settings$FlashSettingActivity" android:label="MrloveFragment"android:icon="@drawable/ic_home_wikofeatures"android:taskAffinity=""><intent-filter android:priority="1"><action android:name="com.android.settings.FLASH_SETTING" /><action android:name="android.settings.FLASH_SETTING" /><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" /><category android:name="com.android.settings.SHORTCUT" /></intent-filter><!-- 优先级来确定显示位置 在category中的物理位置(按优先级排序时用到,并不是指第9个位置,数越大优先级越大越靠前) --><intent-filter android:priority="9"><action android:name="com.android.settings.action.SETTINGS" /></intent-filter><!-- 在首页显示 --><meta-data android:name="com.android.settings.category"android:value="com.android.settings.category.ia.homepage" /><!-- FRAGMENT_CLASS 表明value指定的类是fragment --><meta-data android:name="com.android.settings.FRAGMENT_CLASS"android:value="com.android.settings.FlashSetting" /><!--FlashSettings实现类 --><!-- 被管理账户的intent透传 特别说一下com.android.settings.PRIMARY_PROFILE_CONTROLLED,这个在SettingsInitialize.java中有用到,如果这个值为true,就会调用PackageManager的addCrossProfileIntentFilter()方法,这个方法的作用是让某些Intent透传到其他Profile而不被本Profile的同名组件所捕获。主要用在被管理账户和主账户之间的数据通信。--><meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"android:value="true" /></activity>

②自己实现FlashSetting 这个fragment代码如下:

package com.android.settings;
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class FlashSetting extends PreferenceFragment {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.right_fragment);}
}

③在xml文件夹实现right_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><PreferenceCategoryandroid:key="set_local"android:title="我的位置" /><CheckBoxPreferenceandroid:defaultValue="true"android:key="apply_wireless"android:summary="使用无线网络在应用程序(比如Google地图)中查看位置"android:title="使用无线网络"></CheckBoxPreference>
</PreferenceScreen>

④在Settings.java中添加

 public static class FlashSettingActivity extends SettingsActivity { /* empty */ }

⑤在package com.android.settings.core.gateway;的SettingsGateway.java文件中添加如下代码
一,引入包

import  com.android.settings.FlashSetting;

二, 在public static final String[] ENTRY_FRAGMENTS方法中添加:

FlashSetting.class.getName(),

三,在public static final String[] SETTINGS_FOR_RESTRICTED方法中添加:

Settings.FlashSettingActivity.class.getName(),

https://www.jianshu.com/p/2e644c08646d
https://blog.csdn.net/fsc_fantexi/article/details/90668122

21.android 7.0,8.0,9.0 Settings设置内置选项在一级菜单fragment方式相关推荐

  1. android开发关于和使用本机内存,内置存储卡和外置存储卡大揭秘

    http://www.2cto.com/kf/201304/204729.html android开发关于和使用本机内存,内置存储卡和外置存储卡 --------------------------- ...

  2. 搜狗地图 android wear,Android Wear多款来袭!搜狗地图独家内置

    原标题:Android Wear多款来袭!搜狗地图独家内置 随着多款配置AndroidWear的手表在国内上线,谷歌和苹果在智能手表上的国内"大战"一触即发.虽然,两位" ...

  3. android系统能内存卡,手机SD卡可以作为内置存储吗? 安卓6.0将支持microSD卡作为内置存储...

    过去不少厂商为了引导用户选择存储空间更大更昂贵的机型,纷纷取消了外置存储卡的功能.然而大部分用户自始至终都更青睐支持外置存储卡的手机,这也迫使手机厂商调整策略.现在就连一向排斥外置存储卡的谷歌也在安卓 ...

  4. 微信7.0升级后 高德地图在微信内置浏览器定位失败

    此文为博主原创 转载请注明出处 尊重一下笔者的劳动成果 ⑩分感谢 场景:微信7.0 苹果可以获取到定位 安卓获取不到定位 原因:微信升级7.0做了安全限制 导致使用http的定位不能正常使用 解决办法 ...

  5. android存储文件数据恢复,教程:如何恢复安卓设备内置存储中已删除的文件

    感谢网友mumu214的投稿: 大家好,本教程将指导你如何恢复从任何Android设备的内置存储中删除的文件. 在开始之前先介绍一些数据恢复方面的基础知识: 想必大家在平常使用可存储设备(包括电脑.手 ...

  6. zx1 android版本,蔡司发布全画幅卡片机ZX1:安卓系统 内置Lightroom

    [环球网科技综合报道]9月28日消息,蔡司在世界影像博览Photokina 2018 上正式发布了旗下首款全画幅卡片机ZX1,最大的亮点是内置了Adobe的Lightroom,用户可以直接在触摸屏上编 ...

  7. Android学习笔记(十七)——使用意图调用内置应用程序

    使用意图调用内置应用程序 1.创建一个新的Android项目并命名为Intents,在main.xml文件里加入两个Button: <Buttonandroid:id="@+id/bt ...

  8. mac android 录屏软件,mac录屏怎么录内置声音?详细的解决方案

    原标题:mac录屏怎么录内置声音?详细的解决方案 mac录屏怎么录内置声音?大家使用Mac电脑最大的问题就是对操作系统的不熟悉,就像是刚接触Windows系统一样,开始都会有一定的不熟悉,其实并没有那 ...

  9. Android 学习之路 四大组件之Activity1(内置人品计算器)

    前言: 终于到了四大组件,打掉前面的"小怪",来到安卓的核心boss,开心. 1 创建一个新的Activity    1>如果你想让你的Activity有多个启动图标 需要这 ...

最新文章

  1. 把广告带进虚拟世界实现低成本开发,Anzu.io开始内测报名
  2. 6.13spring随笔
  3. ai系统架构_人工智能中的模糊逻辑系统架构
  4. 文本解析 python 多行,关于python:基于文本的数据格式,支持多行字符串
  5. Python中文乱码
  6. java.util.DualPivotQuickSort的实现
  7. 处理Excel电子表格
  8. NetSuite 在中国 - 一个全程信息化管理平台
  9. 远程工具显示Linux乱码问题解决方案
  10. 速腾(Robosense) M1激光雷达ip配置
  11. 1132: 数字字符统计 C语言
  12. 2021-12-2 uniapp地图定位的研究
  13. 机器人曲线插值拟合算法研究现状简述
  14. 使用iVMS-4200 存储录像数据时的设置
  15. 对于《西游记》的看法
  16. 汉诺塔递归的c语言实现(递归)
  17. Windows 7 装机日志
  18. 服务器默认管理口登录信息(默认IP、用户名、密码)大全
  19. doom emacs如何安装新插件和自定义快捷键
  20. 欧文内容返回字符串php,欧文写的 phpcms代码执行过程

热门文章

  1. qt4.8.6交叉编译详解
  2. vue3 使用render函数渲染插槽,以Naive UI为例
  3. 育知同创iOS培训3月19日(本周六)公开课
  4. jQuery基础入门篇
  5. 【MES】ABB官方49张PPT教你玩转MES!
  6. 工业电气自动化实习报告
  7. where,having,on的区别
  8. Unity编辑器扩展——标签属性Attribute
  9. ZBrush实战操作中的16个技巧,方便新手快速入门
  10. Activiti工作流视频教程-基于Activiti5工作流实战企业协同OA办公系统