zoukankan      html  css  js  c++  java
  • [Android Pro] android 禁用和开启四大组件的方法(setComponentEnabledSetting )

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


    如何关闭组件? 
    关闭组件其实并不难,只要创建packageManager对象和ComponentName对象,并调用packageManager对象的setComponentEnabledSetting方法。

     

    public 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

    Receiver(可以是第三方的receiver)

     

    final ComponentName receiver = new ComponentName(context,需要禁止的receiver); 
     final PackageManager pm = context.getPackageManager(); 
     pm.setComponentEnabledSetting(receiver,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);  }

     

    实例二:隐藏应用图标

     

    如果设置一个app的mainActivity为 则不会再launcher的程序图标中发现该app

     

            PackageManager packageManager = getPackageManager();
            ComponentName componentName = new ComponentName(this, StartActivity.class);
            int res = packageManager.getComponentEnabledSetting(componentName);
            if (res == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
                    || res == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
                // 隐藏应用图标
                packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                        PackageManager.DONT_KILL_APP);
            } else {
                // 显示应用图标
                packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
                        PackageManager.DONT_KILL_APP);
            }
    
    
  • 相关阅读:
    .NET5 ABP框架(二)- WebApi
    找不到版本为(>=2.0.3)的包NETStandard.Library -在 Microsoft Visual Stduio Offine Packages 中找到2个版本[ 最接近:1.6.1 ]
    .NET5 ABP框架(一)
    开学第一节课
    开学考试
    参考:
    安装git
    org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:9083.
    hive insert 出现问题
    hive开启远程连接方法
  • 原文地址:https://www.cnblogs.com/0616--ataozhijia/p/3877409.html
Copyright © 2011-2022 走看看