Android 7.0 settings中添加/删除菜单

本文介绍如何在Android 7.0中自定义设置菜单,通过添加新的菜单项来实现按键交换功能,并提供详细的实现步骤和代码配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:

在设置中,添加一级菜单项,在设备中加入“按键交换”,此项菜单与“显示”并列


由于android 7.0 settings网上资料还没有,此需求在高通技术支持的帮助下加上自己的分析才实现(对高通技术支持小伙表示感谢),实现后发现特别简单,但是实现前一直没头绪,希望记下来能对网友有所帮助

只需实现Activity,写布局文件后,在AndroidManifest.xml中配置即可,配置如下

[java]  view plain  copy
  1. <activity android:name="HardKey"  
  2.                 android:label="@string/hardkey_switch"  
  3.                 android:icon="@drawable/a2_icon_hardkey_switch"  
  4.                 android:taskAffinity="">  
  5.             <intent-filter android:priority="1">  
  6.                 <action android:name="com.android.settings.HARDKEY" />  
  7.                 <action android:name="android.settings.HARDKEY" />  
  8.                 <category android:name="android.intent.category.DEFAULT" />  
  9.             </intent-filter>  
  10.             <intent-filter>  
  11.                 <action android:name="android.intent.action.MAIN" />  
  12.                 <category android:name="android.intent.category.DEFAULT" />  
  13.                 <category android:name="android.intent.category.VOICE_LAUNCH" />  
  14.                 <category android:name="com.android.settings.SHORTCUT" />  
  15.             </intent-filter>  
  16.             <intent-filter android:priority="9">  
  17.                 <action android:name="com.android.settings.action.SETTINGS" />  
  18.             </intent-filter>  
  19.             <meta-data android:name="com.android.settings.category"  
  20.                 android:value="com.android.settings.category.device" />  
  21.             <meta-data android:name="com.android.settings.ACTIVITY_ACTION"  
  22.                 android:value="com.android.settings.HardKey" />  
  23.               
  24.             <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"  
  25.                 android:value="true" />  
  26.         </activity>  

其中HarKey.java是一个Activity文件,直接继承了Activity

设置下的一级菜单必须要有此intent,SettingsActivity文件会根据此filter过滤

 android:priority="9"加这个属性与位置顺序有关,即两个同样的菜单,哪个在前,哪个在后

<intent-filter android:priority="9">
                <action android:name="com.android.settings.action.SETTINGS" />
            </intent-filter>

此meta表示 菜单项在 device的分类中

<meta-data android:name="com.android.settings.category"
                android:value="com.android.settings.category.device" />


表示此文件是一个Activity

<meta-data android:name="com.android.settings.ACTIVITY_ACTION"
                android:value="com.android.settings.HardKey" />

如果是一个fragment,则用

<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.DisplaySettings" />


这个必须要有,不然不会显示在设置菜单项中

[java]  view plain  copy
  1. <intent-filter android:priority="9">  
  2.                 <action android:name="com.android.settings.action.SETTINGS" />  
  3.             </intent-filter>  

这个属性也要加,因为其他的菜单项都有(添加新的类似功能时,对比已有功能实现),具体还不知道起什么作用,有知道的可以留言

<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                android:value="true" />



效果图



原图

下面是删除一项菜单:

     setTileEnabled(new ComponentName(packageName,
                Settings.UserSettingsActivity.class.getName()),
                UserHandle.MU_ENABLED && UserManager.supportsMultipleUsers()
                && !Utils.isMonkeyRunning(), isAdmin, pm);

比如我要删除UserSettingsActivity这个菜单,把把第二个参数或第三个改false即可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值