`

Android : setComponentEnabledSetting,组件禁用和隐藏启动图标

 
阅读更多

        public abstract void setComponentEnabledSetting (ComponentName componentName, int newState, int flags)

        componentName:组件名称 

 

        newState:组件新的状态,可以设置三个值,分别是如下: 

                     不可用状态:COMPONENT_ENABLED_STATE_DISABLED 

                     可用状态:COMPONENT_ENABLED_STATE_ENABLED 

                     默认状态:COMPONENT_ENABLED_STATE_DEFAULT 

 

        flags:行为标签,值可以是DONT_KILL_APP或者0。 0说明杀死包含该组件的app

 

        这个函数的用法:设置组件的enable status

 

        这个函数的英文注释: Set the enabled setting for a package component (activity, receiver, service, provider). This setting will override any enabled state which may have been set by the component in its manifest(http://developer.android.com/reference/android/content/pm/PackageManager.html#setComponentEnabledSetting%28android.content.ComponentName,%20int,%20int%29 )

 

          为什么要关闭组件? 

         在用到组件时,有时候我们可能暂时性的不使用组件,但又不想把组件kill掉,比如创建了一个BroadcastReceiver广播监听器,用来想监听 第一次开机启动后获得系统的许多相关信息,并保存在文件中,这样以后每次开机启动就不需要再去启动该服务了,也就是说如果没有把receiver关闭掉, 就算是不做数据处理,但程序却还一直在后台运行会消耗电量和内存,这时候就需要把这个receiver给关闭掉。

 

         如何关闭组件? 

          只要创建packageManager对象和ComponentName对象,并调用packageManager对象的setComponentEnabledSetting方法。关闭组件,例如:

       PackageManager pacman = context.getPackageManager();

      pacman.setComponentEnabledSetting(new ComponentName(context, HomeActivity.class),

      PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

     

      注意:

       如果设置一个app的mainActivity为COMPONENT_ENABLED_STATE_DISABLED状态,禁用组件,

       1. 让应用程序在主菜单[launcher]程序列表中动态隐藏(COMPONENT_ENABLED_STATE_ENABLED 为显示)

       2. 调用app的setComponentEnabledSetting改变了/data/system/packages.xml 文件中

 

            <package name="你的app的包名" 

                 <enabled-components>

                        <item name="包名.xxActivity" />

                 </enabled-components>

           </package>

 

           eg.

             <package>

                         <package name="com.xxx.xxx" codePath="/system/app/xxx.apk"                                                                      nativeLibraryPath="/data/app-libxxx" flags="4767301" ft="140109d5890"                                                                                it="140109d5890" ut="140109d5890" version="1" userId="10056">

                      <sigs count="1">

                               <cert index="1" />

                      </sigs>

            </package>

分享到:
评论

相关推荐

    Android 接口setComponentEnabledSetting不生效问题.pdf

    在通过接口setComponentEnabledSetting,设置android组件可用或者不可用的时候,如果刚刚设置完成后,立即交流看关机,发现开机后本次设置并没有被保存。本文详细的分析了这个问题。

    Android隐藏桌面图标

    调用此方法将禁用该组件,从而隐藏图标。若要恢复显示图标,只需将`COMPONENT_ENABLED_STATE_DISABLED`替换为`COMPONENT_ENABLED_STATE_ENABLED`。 此外,为了确保用户能够重新启用应用图标,可以提供一个设置界面...

    Android 实现TextView上下滚动效果

    首先,我们要明白TextView是Android SDK中的一个基础组件,用于显示单行或多行文本。当文本内容超过TextView的可视区域时,可以设置其滚动属性来实现自动滚动。Android提供了两种基本的滚动方式:水平滚动和垂直滚动...

    Android动态更换应用图标和应用名称

    `&lt;activity-alias&gt;`是AndroidManifest.xml文件中的一个特殊组件,它可以作为Activity的别名,拥有自己的图标和启动标签。当我们启动一个别名Activity时,实际上就是在启动被别名指向的真实Activity。因此,通过创建...

    Android:HTTPS通信

    7. **安全最佳实践**:遵循安全编码规范,比如定期更新安全库,避免使用过时的SSL/TLS版本和密码套件,以及保持设备上的操作系统和WebView组件更新。 在提供的`HttpLearn`压缩包文件中,可能包含有关如何在Android...

    Android开发教你使用ImageButton系统图标

    &lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt; &lt;item android:state_pressed="true" android:drawable="@drawable/button_pressed" /&gt; &lt;!-- pressed --&gt; &lt;item android:state_focused=...

    Android Axure组件库

    Android Axure组件库是一款专为原型设计工具Axure RP打造的专业资源库,它包含了大量预设的、适用于Android平台的交互元素和控件。这款组件库的最新版本提供了丰富的设计元素,旨在帮助UI/UX设计师快速创建逼真的、...

    Android 左右侧滑组件

    在Android开发中,侧滑组件通常用于实现应用的导航或者扩展功能,比如网易新闻的侧滑菜单展示了不同的新闻分类,豌豆荚的侧滑界面提供了用户的个人中心等。本篇文章将详细探讨如何自定义一个类似的功能,即Android的...

    activity的设置大全

    在Android应用开发中,`Activity`作为四大组件之一,承载着界面交互的主要职责。正确地配置`Activity`的各种属性对于优化用户体验、提升应用性能至关重要。本文将详细解读`Activity`的常见属性及其作用,帮助开发者...

    Android动态更换应用图标和应用名称.zip

    当需要切换应用图标和名称时,你可以通过调用`PackageManager`的`setComponentEnabledSetting()`方法来启用或禁用相应的`activity-alias`。例如: ```java ComponentName componentName1 = new ComponentName...

    自定义android RadioButton样式

    通过设置`android:button="@null"`禁用默认的RadioButton图标,并用`android:background`属性指定我们刚刚创建的自定义样式。 此外,我们还可以通过设置文字颜色、字体大小等属性来进一步定制样式: ```xml ... ...

    android 日期选择组件

    "android 日期选择组件"通常指的是一个可以方便用户选择日期的UI控件,它通常包括对日、月和年的选择。在Android系统中,有多种方式实现这种功能,包括原生的DatePicker和自定义的第三方库。 原生的Android ...

    android 5.1 禁用usb 鼠标和键盘

    使用系统是android5.1 根据客户需求修改的 禁用usb鼠标和键盘!客户的需求是在设置选项里面添加两个选项可以分别禁用usb鼠标 和 键盘 已经修改完成亲测!有完整的步骤和代码! 根据代码小修改一下就可以变成 随时...

    android 免Root屏蔽home键,通过AccessibilityService,屏蔽按键。打王者防误触

    &lt;accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:packageNames="com.example.yourapp" android:accessibilityEventTypes="typeWindowStateChanged|typeViewClicked" ...

    android launcher 日历图标显示日期.zip

    - 使用PackageManager的setComponentEnabledSetting()方法暂时禁用再启用应用组件,这通常会触发Launcher重新加载该应用的图标。 - 如果是自定义Launcher,可以直接调用其提供的接口或服务来刷新指定应用的图标。 ...

    Android下ProgressBar和旗下两个子控件的使用

    总的来说,ProgressBar、SeekBar和RatingBar都是Android UI设计中的重要组件,它们提供了丰富的用户体验和反馈机制。理解并熟练运用这些控件,能让你的Android应用更加易用和专业。通过不断的实践和学习,开发者可以...

    Android WebView 去除标题

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。有时候,我们可能希望去除WebView中的标题部分,以实现更自定义化的界面设计。本篇文章将详细探讨如何在Android的...

    android桌面小组件

    在Android操作系统中,桌面小组件(AppWidget)是一种可以放置在用户主屏幕上的小型应用程序界面,为用户提供快捷访问或操作应用的功能。它们不是独立的应用,而是集成在已安装应用程序中的扩展。下面,我们将深入...

    android简单的圆形进度条

    &lt;rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360"&gt; android:shape="ring" android:...

    Ant design vue 的组件禁用属性 disabled.pdf

    在Ant Design Vue这一流行的前端UI库中,`disabled`属性是一个关键特性,它允许开发者禁用用户对特定组件的操作,从而实现对用户交互的控制。禁用状态通常用于表示组件处于不可操作或非活动状态,这在许多场景下都是...

Global site tag (gtag.js) - Google Analytics