21.android 7.0,8.0,9.0 Settings设置内置选项在一级菜单fragment方式
我的私人博客: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 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>
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方式相关推荐
- android开发关于和使用本机内存,内置存储卡和外置存储卡大揭秘
http://www.2cto.com/kf/201304/204729.html android开发关于和使用本机内存,内置存储卡和外置存储卡 --------------------------- ...
- 搜狗地图 android wear,Android Wear多款来袭!搜狗地图独家内置
原标题:Android Wear多款来袭!搜狗地图独家内置 随着多款配置AndroidWear的手表在国内上线,谷歌和苹果在智能手表上的国内"大战"一触即发.虽然,两位" ...
- android系统能内存卡,手机SD卡可以作为内置存储吗? 安卓6.0将支持microSD卡作为内置存储...
过去不少厂商为了引导用户选择存储空间更大更昂贵的机型,纷纷取消了外置存储卡的功能.然而大部分用户自始至终都更青睐支持外置存储卡的手机,这也迫使手机厂商调整策略.现在就连一向排斥外置存储卡的谷歌也在安卓 ...
- 微信7.0升级后 高德地图在微信内置浏览器定位失败
此文为博主原创 转载请注明出处 尊重一下笔者的劳动成果 ⑩分感谢 场景:微信7.0 苹果可以获取到定位 安卓获取不到定位 原因:微信升级7.0做了安全限制 导致使用http的定位不能正常使用 解决办法 ...
- android存储文件数据恢复,教程:如何恢复安卓设备内置存储中已删除的文件
感谢网友mumu214的投稿: 大家好,本教程将指导你如何恢复从任何Android设备的内置存储中删除的文件. 在开始之前先介绍一些数据恢复方面的基础知识: 想必大家在平常使用可存储设备(包括电脑.手 ...
- zx1 android版本,蔡司发布全画幅卡片机ZX1:安卓系统 内置Lightroom
[环球网科技综合报道]9月28日消息,蔡司在世界影像博览Photokina 2018 上正式发布了旗下首款全画幅卡片机ZX1,最大的亮点是内置了Adobe的Lightroom,用户可以直接在触摸屏上编 ...
- Android学习笔记(十七)——使用意图调用内置应用程序
使用意图调用内置应用程序 1.创建一个新的Android项目并命名为Intents,在main.xml文件里加入两个Button: <Buttonandroid:id="@+id/bt ...
- mac android 录屏软件,mac录屏怎么录内置声音?详细的解决方案
原标题:mac录屏怎么录内置声音?详细的解决方案 mac录屏怎么录内置声音?大家使用Mac电脑最大的问题就是对操作系统的不熟悉,就像是刚接触Windows系统一样,开始都会有一定的不熟悉,其实并没有那 ...
- Android 学习之路 四大组件之Activity1(内置人品计算器)
前言: 终于到了四大组件,打掉前面的"小怪",来到安卓的核心boss,开心. 1 创建一个新的Activity 1>如果你想让你的Activity有多个启动图标 需要这 ...
最新文章
- 把广告带进虚拟世界实现低成本开发,Anzu.io开始内测报名
- 6.13spring随笔
- ai系统架构_人工智能中的模糊逻辑系统架构
- 文本解析 python 多行,关于python:基于文本的数据格式,支持多行字符串
- Python中文乱码
- java.util.DualPivotQuickSort的实现
- 处理Excel电子表格
- NetSuite 在中国 - 一个全程信息化管理平台
- 远程工具显示Linux乱码问题解决方案
- 速腾(Robosense) M1激光雷达ip配置
- 1132: 数字字符统计 C语言
- 2021-12-2 uniapp地图定位的研究
- 机器人曲线插值拟合算法研究现状简述
- 使用iVMS-4200 存储录像数据时的设置
- 对于《西游记》的看法
- 汉诺塔递归的c语言实现(递归)
- Windows 7 装机日志
- 服务器默认管理口登录信息(默认IP、用户名、密码)大全
- doom emacs如何安装新插件和自定义快捷键
- 欧文内容返回字符串php,欧文写的 phpcms代码执行过程