观心静

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

前言

  此篇博客用于记录系统的各种广播状态

广播监听开机

  注册静态广播

        <receiver android:name=".receiver.MyReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

  添加权限

   <!-- 接收开机广播的权限,开机是很危险的行为,所以需要此权限 -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

  接收广播

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
            L.e("设备开机了");
        }
    }
}

广播监听关机

  注册静态广播

        <receiver android:name=".receiver.ShutdownReceiver">
            <intent-filter>
                <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
            </intent-filter>
        </receiver>

  接收广播

public class ShutdownReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.intent.action.ACTION_SHUTDOWN")){
            L.e("设备关机了...");
        }
    }
}

网络变化广播

注册

        IntentFilter networkChangeFilter = new IntentFilter();
        networkChangeFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        NetWorkChangeReceiver netWorkChangeReceiver = new NetWorkChangeReceiver();//网络变化广播
        registerReceiver(netWorkChangeReceiver, networkChangeFilter);

接收

public class NetWorkChangeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent == null) {
            return;
        }
        String action = intent.getAction();
        if (TextUtils.isEmpty(action)) {
            return;
        }


        if (!TextUtils.equals(action, ConnectivityManager.CONNECTIVITY_ACTION)) {
            return;
        }
        // 监听网络连接,包括wifi和移动数据的打开和关闭,以及连接上可用的连接都会接到监听

        Log.i("hcz", " CONNECTIVITY_ACTION ");
        //获取联网状态的NetworkInfo对象
        NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
        if (info == null) {
            return;
        }
        if (NetworkInfo.State.CONNECTED != info.getState() || !info.isAvailable()) {
            EventBus.getDefault().post(new NetChangerEvent(false));
            return;
        }

        int type = info.getType();
        //如果当前的网络连接成功并且网络连接可用
        if (type == ConnectivityManager.TYPE_WIFI || type == ConnectivityManager.TYPE_MOBILE) {
            Log.i("hcz", getConnectionType(info.getType()) + "连上");
            EventBus.getDefault().post(new NetChangerEvent(true));
        }
    }

    /**
     * 获取连接类型
     *
     * @param type type
     * @return String
     */
    private String getConnectionType(int type) {
        String connType = "";
        if (type == ConnectivityManager.TYPE_MOBILE) {
            connType = "3G网络数据";
        } else if (type == ConnectivityManager.TYPE_WIFI) {
            connType = "WIFI网络";
        }
        return connType;
    }

}

时间变化广播

注册

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_TIME_TICK);                            //时间变化广播
        registerReceiver(new TimeChangeReceiver(), intentFilter);

接收

public class TimeChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_TIME_TICK)) {
            LogUtils.d("时间变化");
        }
    }
}

灭屏Or亮屏监听

注册

        mPowerReceiver = PowerReceiver()
        val intent = IntentFilter()
        intent.addAction(Intent.ACTION_SCREEN_ON)
        intent.addAction(Intent.ACTION_SCREEN_OFF)
        registerReceiver(mPowerReceiver, intent)

监听

public class PowerReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e("ytzn", "onReceive: " + intent.getAction());
    }
}

多媒体音量变化广播监听

    /**
     * 多媒体音量变化广播监听
     */
    inner class VolumeReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action.equals("android.media.VOLUME_CHANGED_ACTION")) {
                val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
                val currVolume: Int = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
                updateVolumeView(currVolume)
            }
        }
    }

    /**
     * 初始化音量
     */
    private fun initVolume() {
        mVolumeReceiver = VolumeReceiver()
        val filter = IntentFilter()
        filter.addAction("android.media.VOLUME_CHANGED_ACTION")
        context.registerReceiver(mVolumeReceiver, filter)
        val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
        val currVolume: Int = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)       // 当前的媒体音量
        updateVolumeView(currVolume)
    }

应用安装/卸载/更新

inner class AppUpdateReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {

            if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
                var packageName = intent.getDataString()
                Log.e(TAG, packageName + "安装成功")
            } else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {
                var packageName = intent.getData().getSchemeSpecificPart() //获取包名
                Log.e(TAG, packageName + "替换成功")
            } else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
                var packageName = intent . getData ().getSchemeSpecificPart()
                Log.e(TAG, packageName + "卸载成功")
            }

        }
    }


public static void registerReceiver(Context context) {
        mIntentFilter = new IntentFilter();
        mIntentFilter.addDataScheme("package");
        mIntentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
        mIntentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        mIntentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
        context.registerReceiver(mReceiver, mIntentFilter);
    }

全部广播

/**
 * 广播动作:当设备进入睡眠状态并变为非交互状态时发送。
 *
 * 由于历史原因,这个广播动作的名称指的是屏幕的电源状态,但它实际上是响应设备整体交互状态的变化而发送的。
 *
 *这个广播是在设备变为非交互式时发送的,这可能与屏幕关闭无关。要确定屏幕的实际状态,使用[android.view.Display.getState]。
 *
 *看到[android.os.PowerManager。详情isInteractive]。
 * 您不能通过清单中声明的组件来接收它,只能显式地向[Context.registerReceiver ()][Context.registerReceiver]注册它。
 *
 *这是一个受保护的意图,只能由系统发送。
 */
val ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF"

/**
 * 广播动作:当设备唤醒并变为交互式时发送。
 * 由于历史原因,这个广播动作的名称指的是屏幕的电源状态,但它实际上是响应设备整体交互状态的变化而发送的。
 * 这个广播是在设备变为交互式时发送的,这可能与屏幕打开无关。要确定屏幕的实际状态,使用[android.view.Display.getState]。
 *
 * 看到[android.os.PowerManager。详情isInteractive]。您不能通过清单中声明的组件来接收它,只能显式地向[Context.registerReceiver ()][Context.registerReceiver]注册它。
 *
 *
 */
val ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON"

/**
 * 广播动作:系统停止屏保后发送。
 * 这是一个受保护的意图,只能由系统发送。它只被发送给注册的收件人。
 */
val ACTION_DREAMING_STOPPED = "android.intent.action.DREAMING_STOPPED"

/**
 * 广播动作:系统开始屏保后发送。
 * 这是一个受保护的意图,只能由系统发送。它只被发送给注册的收件人。
 */
val ACTION_DREAMING_STARTED = "android.intent.action.DREAMING_STARTED"

/**
 * 广播动作:当设备唤醒后用户在场时发送(例如当键盘保护消失时)。
 *  这是一个受保护的意图,只能由系统发送。
 */
val ACTION_USER_PRESENT = "android.intent.action.USER_PRESENT"

/**
 * 广播动作:当前时间发生了变化。发送每一分钟。
 * 您不能通过清单中声明的组件来接收它,只能显式地向[Context.registerReceiver ()][Context.registerReceiver]注册它。
 * 这是一个受保护的意图,只能由系统发送。
 */
val ACTION_TIME_TICK = "android.intent.action.TIME_TICK"

/**
 * 广播动作:设定时间。
 */
val ACTION_TIME_CHANGED = "android.intent.action.TIME_SET"

/**
 * 广播动作:日期已更改。
 */
val ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED"

/**
 * 广播动作:时区已更改。该意图将有以下额外的值:
 *
 *  time-zone—java.util.TimeZone.getID()值标识新的时区。
 *
 */
val ACTION_TIMEZONE_CHANGED = "android.intent.action.TIMEZONE_CHANGED"

/**
 * 清除DNS缓存动作:这是广播时,网络已经改变和旧
 * 应该抛出DNS条目。
 * @hide
 */
val ACTION_CLEAR_DNS_CACHE = "android.intent.action.CLEAR_DNS_CACHE"

/**
 * 告警更改动作:当AlarmClock应用程序的告警被设置或取消设置时,这是广播。它由AlarmClock应用程序和StatusBar服务使用。
 * @hide
 */
val ACTION_ALARM_CHANGED = "android.intent.action.ALARM_CHANGED"

/**
 * 广播动作:在用户完成引导后,但仍处于“锁定”状态时,广播一次。它可以用于执行特定于应用程序的初始化,例如安装警报。
 * 你必须持有[android.Manifest.permission.RECEIVE_BOOT_COMPLETED]权限以便接收此广播。
 *
 *此广播在启动时立即由运行[android.os.Build.VERSION_CODES]的所有设备(无论是否支持直接引导)发送。N]或更高。
 * 在接收到此广播时,用户仍然处于锁定状态,只有受设备保护的存储才能被安全访问。
 * 如果您想访问凭据保护的存储,您需要等待用户被解锁(通常是第一次输入他们的锁定模式或PIN),{@link #ACTION_USER_UNLOCKED}和
 * {@link #ACTION_BOOT_COMPLETED} 广播发送。
 *
 * 要接收这个广播,你的接收器组件必须被标记为[ComponentInfo.directBootAware]。
 *
 * @see Context.createDeviceProtectedStorageContext
 */
val ACTION_LOCKED_BOOT_COMPLETED = "android.intent.action.LOCKED_BOOT_COMPLETED"

/**
 * 广播动作:该动作在用户完成引导后广播一次。它可以用于执行特定于应用程序的初始化,例如安装警报。你必须持有[android.Manifest.permission.RECEIVE_BOOT_COMPLETED]权限以便接收此广播。
 *
 * 该广播由所有设备(支持或不支持直接引导)在引导时发送。接收到此广播后,用户被解锁,设备保护和凭据保护的存储都可以安全地访问。
 * 如果您需要在用户仍然处于锁定状态(在他们第一次输入锁定模式或PIN之前)时运行,您可以监听[。ACTION_LOCKED_BOOT_COMPLETED广播。
 */
@BroadcastBehavior(includeBackground = true)
val ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED"

/**
 * 广播动作:当用户动作请求解散临时系统对话框时,这是广播动作。临时系统对话框的一些例子是通知窗口阴影和最近任务对话框。
 */
val ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS"

/**
 * 广播动作:触发包的下载和最终安装。
 *
 * [.getData] 是要下载的包文件的URI。
 *
 */
@Deprecated("This constant has never been used.")
val ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL"

/**
 * 广播动作:设备上已经安装了新的应用程序包。数据包含包的名称。注意,新安装的包不接收此广播。
 *
 * 可能包括以下额外内容:
 *    [.EXTRA_UID] 包含分配给新包的整数uid。
 *    [.EXTRA_REPLACING] 是否设置为true
 *    [.ACTION_PACKAGE_REMOVED] 广播相同的包。
 */
val ACTION_PACKAGE_ADDED = "android.intent.action.PACKAGE_ADDED"

/**
 广播动作:安装了新版本的应用程序包,取代了以前安装的现有版本。数据包含包的名称。
 *
 *可能包括以下额外内容:
 *  [.EXTRA_UID] 包含分配给新包的整数uid。
 *
 */
val ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED"

/**
 * 广播动作:应用程序的新版本已安装在现有版本之上。这只发送到被替换的应用程序。它不包含任何额外的数据;要接收它,只需为该操作使用一个意图过滤器。
 */
val ACTION_MY_PACKAGE_REPLACED = "android.intent.action.MY_PACKAGE_REPLACED"

/**
 * 广播动作:已从设备中删除现有的应用程序包。数据包含包的名称。正在被删除的包不接收此Intent。
 *
 *  [.EXTRA_UID] 包含先前分配给包的整数uid。
 *  [.EXTRA_DATA_REMOVED]如果删除整个应用程序(数据和代码),则设置为true。
 *  [.EXTRA_REPLACING] 是否设置为true
 *  [.ACTION_PACKAGE_ADDED] 广播相同的包。
 */
val ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED"

/**
 * 广播动作:现有的应用程序包已完全从设备上删除。数据包含包的名称。这就像[。]ACTION_PACKAGE_REMOVED],但只在何时设置
 * [.EXTRA_DATA_REMOVED] 是真的,
 * [.EXTRA_REPLACING] 那个广播是假的。
 * [.EXTRA_UID] 包含先前分配给包的整数uid。
 *
 *
 *
 */
val ACTION_PACKAGE_FULLY_REMOVED = "android.intent.action.PACKAGE_FULLY_REMOVED"

/**
 * 广播动作:更改了现有的应用程序包(例如,启用或禁用了某个组件)。数据包含包的名称。
 *
 * [.EXTRA_UID] 包含分配给包的整数uid。
 * [.EXTRA_CHANGED_COMPONENT_NAME_LIST] 包含已更改组件的类名(或包名本身)。
 * [.EXTRA_DONT_KILL_APP] 包含Boolean字段以覆盖重新启动应用程序的默认操作。
 */
val ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED"

/**
 * @hide
 * 广播动作:询问系统服务是否有重新启动给定包的原因。数据包含包的名称。
 *  *  [.EXTRA_UID] 包含分配给包的整数uid。
 *  *  [.EXTRA_PACKAGES] 要检查的所有包的字符串数组。
 */
@SystemApi
val ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART"

/**
 *  广播动作:用户已经重新启动了一个包,并且它的所有进程都已被杀死。应该删除与之相关的所有运行时状态(流程、警报、通知等)。
 *  注意,重新启动的包不接收此广播。数据包含包的名称。
 *
 *  [.EXTRA_UID] 包含分配给包的整数uid。
 */
val ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED"

/**
 * 广播动作(Broadcast Action):用户清除了数据包的数据。这句话的前面应该加上[action_package_restart],在此之后,它的所有持久数据将被擦除并发送此广播。
 * 注意,被清除的包不接收此广播。数据包含包的名称。
 *
 *   [.EXTRA_UID] 包含分配给包的整数uid。如果被清除数据的包是一个已卸载的即时应用程序,则UID为-1。在卸载即时应用程序后,平台会保留一些与之关联的元数据。
 *   [.EXTRA_PACKAGE_NAME] 仅当清除的数据是针对即时应用程序时才包含包名。
 */
val ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED"

/**
 * 广播行动:包已暂停。
 *
 * 包括以下额外:
 *
 *  [.EXTRA_CHANGED_PACKAGE_LIST]是否已挂起的一组包
 * 它只被发送给注册的收件人。
 */
val ACTION_PACKAGES_SUSPENDED = "android.intent.action.PACKAGES_SUSPENDED"

/**
 * 广播行动:未暂停包。
 *
 * 包括以下额外:
 *
 *  [.EXTRA_CHANGED_PACKAGE_LIST] 一套未被暂停的包
 *
 * 它只被发送给注册的收件人。
 */
val ACTION_PACKAGES_UNSUSPENDED = "android.intent.action.PACKAGES_UNSUSPENDED"

/**
 * 广播动作:发送到被系统挂起的包。当一个包处于挂起状态或它的任何应用程序额外内容在挂起状态时,它就会被发送。
 *
 *  可选地包括以下额外内容:
 *  [.EXTRA_SUSPENDED_PACKAGE_EXTRAS] 这是一个[Bundle],它将包含被挂起的应用程序的有用信息。
 *  这将被送到 [BroadcastReceiver] 在清单中声明的组件。
 *
 * @see .ACTION_MY_PACKAGE_UNSUSPENDED
 *
 * @see .EXTRA_SUSPENDED_PACKAGE_EXTRAS
 * @see PackageManager.isPackageSuspended
 * @see PackageManager.getSuspendedPackageAppExtras
 */
val ACTION_MY_PACKAGE_SUSPENDED = "android.intent.action.MY_PACKAGE_SUSPENDED"

/**
 * 活动:开始显示关于应用程序为何被暂停的更多细节。
 * 每当系统检测到一个挂起的应用的活动启动时,这个动作可以用来显示关于挂起原因的更多细节。
 * 应用程序持有 [android.Manifest.permission.SUSPEND_APPS] 必须声明一个处理此意图的活动并保护它吗
 * [android.Manifest.permission.SEND_SHOW_SUSPENDED_APP_DETAILS].
 *
 * 包括一个额外的 [.EXTRA_PACKAGE_NAME] 这是挂起的包的名称。
 *
 * @see PackageManager.setPackagesSuspended
 * @see PackageManager.isPackageSuspended
 * @see .ACTION_PACKAGES_SUSPENDED
 *
 *
 * @hide
 */
@SystemApi
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
val ACTION_SHOW_SUSPENDED_APP_DETAILS = "android.intent.action.SHOW_SUSPENDED_APP_DETAILS"

/**
 * 广播动作:发送到一个未挂起的包。
 *  这将被交付到清单中声明的[BroadcastReceiver]组件。
 *
 * @see .ACTION_MY_PACKAGE_SUSPENDED
 *
 * @see .EXTRA_SUSPENDED_PACKAGE_EXTRAS
 *
 * @see PackageManager.isPackageSuspended
 * @see PackageManager.getSuspendedPackageAppExtras
 */
val ACTION_MY_PACKAGE_UNSUSPENDED = "android.intent.action.MY_PACKAGE_UNSUSPENDED"

/**
 * 广播动作:用户ID已从系统中删除。用户ID号存储在[.extra_uid]下的额外数据中。
 *
 */
val ACTION_UID_REMOVED = "android.intent.action.UID_REMOVED"

/**
 * Broadcast Action:当应用程序第一次启动(即第一次从停止状态移出)时发送到应用程序的安装程序包。数据包含包的名称。
 *
 */
val ACTION_PACKAGE_FIRST_LAUNCH = "android.intent.action.PACKAGE_FIRST_LAUNCH"

/**
 * 广播动作:当包需要验证时发送给系统包验证器。数据包含包URI。
 *
 */
val ACTION_PACKAGE_NEEDS_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_VERIFICATION"

/**
 *广播动作:当包被验证时发送给系统包验证器。数据包含包URI。
 */
val ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED"

/**
 * 广播动作:当意图过滤器需要验证时,发送给系统意图过滤器验证器。数据包含要对其进行验证的筛选器数据主机。
 * @hide
 */
@SystemApi
val ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION"

/**
 * 广播行动:一组包(以前不可用)的资源目前是可用的,因为它们所在的媒体是可用的。
 * 额外的数据 [.EXTRA_CHANGED_PACKAGE_LIST]包含可用性发生更改的包的列表。
 * 额外的数据 [.EXTRA_CHANGED_UID_LIST] 包含可用性发生更改的包的uid列表。请注意,
 * 此列表中的包不接收此广播。指定的软件包集现在可以在系统上使用。
 * 包括以下额外:
 *
 * [.EXTRA_CHANGED_PACKAGE_LIST]是其资源(以前不可用)目前可用的包集。
 * [.EXTRA_CHANGED_UID_LIST] 是其资源(以前不可用)目前可用的包的uid集。
 */
val ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE"

/**
 * Broadcast Action: Resources for a set of packages are currently
 * unavailable since the media on which they exist is unavailable.
 * The extra data [.EXTRA_CHANGED_PACKAGE_LIST] contains a
 * list of packages whose availability changed.
 * The extra data [.EXTRA_CHANGED_UID_LIST] contains a
 * list of uids of packages whose availability changed.
 * The specified set of packages can no longer be
 * launched and are practically unavailable on the system.
 *
 * Inclues the following extras:
 *
 *  *  [.EXTRA_CHANGED_PACKAGE_LIST] is the set of packages
 * whose resources are no longer available.
 * [.EXTRA_CHANGED_UID_LIST] is the set of packages
 * whose resources are no longer available.
 *
 *
 *
 */
val ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE"

/**
 * Broadcast Action: preferred activities have changed *explicitly*.
 *
 *
 * Note there are cases where a preferred activity is invalidated *implicitly*, e.g.
 * when an app is installed or uninstalled, but in such cases this broadcast will *not*
 * be sent.
 *
 * [.EXTRA_USER_HANDLE] contains the user ID in question.
 *
 * @hide
 */
val ACTION_PREFERRED_ACTIVITY_CHANGED = "android.intent.action.ACTION_PREFERRED_ACTIVITY_CHANGED"



/**
 * Broadcast动作:当前设备 [android.content.res.Configuration] (方向,区域等)已经改变。当发生这样的更改时,需要基于这个新信息重新构建ui(视图层次结构);
 * 在大多数情况下,应用程序不需要担心这一点,因为系统将负责停止和重新启动应用程序,以确保它看到新的更改。
 * 一些无法重新启动的系统代码将需要监视此操作并适当地处理它。
 *
 * 您不能通过清单中声明的组件来接收它,只能通过显式地为其注册
 * [ Context.registerReceiver()][Context.registerReceiver].
 *
 * @see android.content.res.Configuration
 */
val ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED"

/**
 * Broadcast动作:当前设备 [android.content.res.Configuration] 已更改,因此该设备可能符合安装附加配置分隔的条件。可以触发此广播的配置属性包括区域设置和显示密度。
 *
 *像[.ACTION_CONFIGURATION_CHANGED],您可以通过清单中声明的组件来接收它。但是,接收方必须持有
 * [android.Manifest.permission.INSTALL_PACKAGES] permission.
 *
 * @hide
 */
@SystemApi
val ACTION_SPLIT_CONFIGURATION_CHANGED = "android.intent.action.SPLIT_CONFIGURATION_CHANGED"

/**
 * 广播动作:当前设备的地区已经改变。
 */
val ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED"

/**
 * 广播行动:  这是一个粘性广播,包含充电状态、水平和关于电池的其他信息。
 * 参考[android.os.BatteryManager] 查阅有关意向内容的文件。
 *
 *
 *
 * 您不能通过清单中声明的组件来接收它,只能通过显式地为其注册
 * [ Context.registerReceiver()][Context.registerReceiver].
 * 参看 [.ACTION_BATTERY_LOW],[.ACTION_BATTERY_OKAY], [.ACTION_POWER_CONNECTED],[.ACTION_POWER_DISCONNECTED]
 * 用于通过显式接收器发送和接收的与电池相关的不同广播。
 *
 */
val ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED"


/**
 * 广播动作:当前电池电量变化时发送。
 *
 * 它有 [android.os.BatteryManager.EXTRA_EVENTS] 它携带一个[Bundle]实例列表,表示单个电池级别的变化,以及来自[.action_battery_changed]的相关附加。
 *
 * This broadcast requires [android.Manifest.permission.BATTERY_STATS] permission.
 *
 * @hide
 */
@SystemApi
val ACTION_BATTERY_LEVEL_CHANGED = "android.intent.action.BATTERY_LEVEL_CHANGED"

/**
 * 广播动作:表示设备上电量不足。此广播对应于“电池电量不足警告”系统对话框。
 */
val ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW"

/**
 * 广播行动: 表示电池电量低后正常工作。这将发送后[.ACTION_BATTERY_LOW] 一旦电池恢复到正常状态。
 */
val ACTION_BATTERY_OKAY = "android.intent.action.BATTERY_OKAY"

/**
 * 广播动作:设备已连接外部电源。这适用于希望专门注册此通知的应用程序。
 * 与ACTION_BATTERY_CHANGED不同的是,应用程序将因此被唤醒,
 * 因此不必保持活动状态来接收此通知。此操作可用于实现等待电源可用以触发的操作。
 */
val ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED"

/**
 * 广播动作:外部电源已从设备中移除。这适用于希望专门注册此通知的应用程序。
 * 与ACTION_BATTERY_CHANGED不同的是,应用程序将因此被唤醒,
 * 因此不必保持活动状态来接收此通知。此操作可用于实现等待电源可用以触发的操作。
 */
val ACTION_POWER_DISCONNECTED = "android.intent.action.ACTION_POWER_DISCONNECTED"

/**
 * 广播动作:设备正在关闭。当设备处于关闭状态(完全关闭,而不是休眠状态)时广播此消息。广播完成后,将进行最后的关闭,所有未保存的数据将丢失。应用程序通常不需要处理这个,因为前台活动也会暂停。
 *
 * 自[Build.VERSION_CODES.P] 起,此广播只发送给通过注册的接收者 [ Context.registerReceiver][Context.registerReceiver].
 *
 * 可能包括以下额外内容:
 *  [.EXTRA_SHUTDOWN_USERSPACE_ONLY] 如果此关闭仅针对用户空间进程,则将此布尔值设置为true。如果未设置,则假定为false。
 *
 */
val ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN"

/**
 * 活动操作: 启动此活动请求系统关闭。
 *
 * 可选的布尔值额外字段[.EXTRA_KEY_CONFIRM]可以设置为true,以便在关闭前向用户请求确认。
 *
 * 可选的布尔值额外字段[.EXTRA_USER_REQUESTED_SHUTDOWN]可以设置为true,表示关机是由用户请求的。
 * {@hide}
 */
const val ACTION_REQUEST_SHUTDOWN = "com.android.internal.intent.action.REQUEST_SHUTDOWN"

/**
 * 广播动作:粘性广播,表示设备存储空间不足
 *
 */
@Deprecated(
    """if your app targets {@link android.os.Build.VERSION_CODES#O}
                  or above, this broadcast will no longer be delivered to any
                  {@link BroadcastReceiver} defined in your manifest. Instead,
                  apps are strongly encouraged to use the improved
                  {@link Context#getCacheDir()} behavior so the system can
                  automatically free up storage when needed."""
)
val ACTION_DEVICE_STORAGE_LOW = "android.intent.action.DEVICE_STORAGE_LOW"

/**
 * 广播动作:表示设备上的存储空间不足的情况已经不存在
 */
@Deprecated(
    """if your app targets {@link android.os.Build.VERSION_CODES#O}
                  or above, this broadcast will no longer be delivered to any
                  {@link BroadcastReceiver} defined in your manifest. Instead,
                  apps are strongly encouraged to use the improved
                  {@link Context#getCacheDir()} behavior so the system can
                  automatically free up storage when needed."""
)
val ACTION_DEVICE_STORAGE_OK = "android.intent.action.DEVICE_STORAGE_OK"

/**
 * 广播动作:粘性广播,表示设备上的存储空间已满。这适用于那些希望能够完全填充数据分区,只留下足够的空闲空间以防止系统范围的SQLite故障的活动。
 * @hide
 */
@Deprecated(
    """if your app targets {@link android.os.Build.VERSION_CODES#O}
                  or above, this broadcast will no longer be delivered to any
                  {@link BroadcastReceiver} defined in your manifest. Instead,
                  apps are strongly encouraged to use the improved
                  {@link Context#getCacheDir()} behavior so the system can
                  automatically free up storage when needed.
      """
)
val ACTION_DEVICE_STORAGE_FULL = "android.intent.action.DEVICE_STORAGE_FULL"

/**
 * 广播动作:表示设备上的存储空间已满。
 * @hide
 */
@Deprecated(
    """if your app targets {@link android.os.Build.VERSION_CODES#O}
                  or above, this broadcast will no longer be delivered to any
                  {@link BroadcastReceiver} defined in your manifest. Instead,
                  apps are strongly encouraged to use the improved
                  {@link Context#getCacheDir()} behavior so the system can
                  automatically free up storage when needed.
      """
)
val ACTION_DEVICE_STORAGE_NOT_FULL = "android.intent.action.DEVICE_STORAGE_NOT_FULL"

/**
 * 广播动作:表示用户认可的低内存状态通知,应该启动包管理。这是由用户从ACTION_DEVICE_STORAGE_LOW通知触发的。
 */
val ACTION_MANAGE_PACKAGE_STORAGE = "android.intent.action.MANAGE_PACKAGE_STORAGE"

/**
 * 广播动作:设备已进入USB海量存储模式。这主要用于USB设置面板。应用程序应该监听ACTION_MEDIA_MOUNTED和ACTION_MEDIA_UNMOUNTED广播,以便在SD卡文件系统被挂载或卸载时被通知
 */
@Deprecated("replaced by android.os.storage.StorageEventListener")
val ACTION_UMS_CONNECTED = "android.intent.action.UMS_CONNECTED"

/**
 * 广播动作:设备已退出USB海量存储模式。这主要用于USB设置面板。应用程序应该监听ACTION_MEDIA_MOUNTED和ACTION_MEDIA_UNMOUNTED广播,以便在SD卡文件系统被挂载或卸载时被通知
 */
@Deprecated("replaced by android.os.storage.StorageEventListener")
val ACTION_UMS_DISCONNECTED = "android.intent.action.UMS_DISCONNECTED"

/**
 * 广播动作:外部媒体已被移除。被移除媒体的挂载点路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED"

/**
 * 广播动作:存在外部媒体,但没有在其挂载点上挂载。到被卸载的媒体的挂载点的路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED"

/**
 * 广播动作:存在外部媒体,并正在进行磁盘检查。用于检查媒体的挂载点的路径包含在意图中。mData字段。
 */
val ACTION_MEDIA_CHECKING = "android.intent.action.MEDIA_CHECKING"

/**
 * 广播动作:外部媒体存在,但使用了不兼容的fs(或为空)。用于检查媒体的挂载点的路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_NOFS = "android.intent.action.MEDIA_NOFS"

/**
 * 广播动作:外部媒体存在并挂载在其挂载点。到被挂载媒体的挂载点的路径包含在Intent中。mData字段。Intent包含一个额外的名称为“read-only”和一个布尔值来指示媒体是否被只读挂载。
 */
val ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED"

/**
 * 广播动作:外部媒体被卸载,因为它是通过USB大容量存储共享的。到共享媒体挂载点的路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_SHARED = "android.intent.action.MEDIA_SHARED"

/**
 * 广播动作:不再通过USB大容量存储共享外部媒体。到先前共享媒体的挂载点的路径包含在Intent中。mData字段。
 *
 * @hide
 */
const val ACTION_MEDIA_UNSHARED = "android.intent.action.MEDIA_UNSHARED"

/**
 * 广播动作:从SD卡槽中移除外部媒体,但没有卸载挂载点。被移除媒体的挂载点路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL"

/**
 * 广播动作:存在外部媒体,但不能挂载。到不可挂载媒体的挂载点的路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_UNMOUNTABLE = "android.intent.action.MEDIA_UNMOUNTABLE"

/**
 * 广播动作:用户表示希望删除外部存储媒体。当应用程序收到这个意图时,应该关闭它们在挂载点内打开的所有文件。要弹出的媒体的挂载点的路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_EJECT = "android.intent.action.MEDIA_EJECT"

/**
 * 广播动作:媒体扫描程序已开始扫描目录。被扫描目录的路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_SCANNER_STARTED = "android.intent.action.MEDIA_SCANNER_STARTED"

/**
 * 广播动作:媒体扫描器已完成对目录的扫描。被扫描目录的路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_SCANNER_FINISHED = "android.intent.action.MEDIA_SCANNER_FINISHED"

/**
 * 广播动作:请求媒体扫描器扫描文件并将其添加到媒体数据库。文件的路径包含在Intent中。mData字段。
 */
val ACTION_MEDIA_SCANNER_SCAN_FILE = "android.intent.action.MEDIA_SCANNER_SCAN_FILE"

/**
 * 广播动作:按下“媒体按钮”。包括一个额外的字段[.EXTRA_KEY_EVENT],包含导致广播的键事件。
 */
val ACTION_MEDIA_BUTTON = "android.intent.action.MEDIA_BUTTON"

/**
 * 广播动作:按下“摄像按钮”。包括一个额外的字段[.EXTRA_KEY_EVENT],包含导致广播的键事件。
 */
val ACTION_CAMERA_BUTTON = "android.intent.action.CAMERA_BUTTON"

/**
 * 广播动作:GTalk连接已经建立。
 */
val ACTION_GTALK_SERVICE_CONNECTED = "android.intent.action.GTALK_CONNECTED"

/**
 * 广播动作:GTalk连接已断开。
 */
val ACTION_GTALK_SERVICE_DISCONNECTED = "android.intent.action.GTALK_DISCONNECTED"

/**
 * 广播动作:输入法已被更改。
 */
val ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED"

/**
 *
 * 广播动作:用户已切换到或退出飞行模式。一个或多个收音机已关闭或打开。
 * 该意图将有以下额外的值:state—指示飞机模式是否开启的布尔值。如果是这样,那么手机无线电以及蓝牙或WiFi等其他无线电可能也被关闭了
 */
val ACTION_AIRPLANE_MODE_CHANGED = "android.intent.action.AIRPLANE_MODE"

/**
 * 广播动作:一些内容提供者在其名称空间中有发布用户可能特别感兴趣的新事件或项的部分。对于这些东西,当有趣的项目集发生变化时,它们可能会传播这个动作。
 *
 * 例如,当收件箱中未读邮件的集合发生变化时,GmailProvider会发送此通知。
 * 意图的数据确定了提供者的哪个部分发生了变化。当通过内容解析器进行查询时,数据URI将返回有问题的数据集。

 * 该意图将有以下额外的值:
 * count—数据集中的项数。这与通过查询数据URI返回的游标中的项数相同。
 *
 * 该意图将在启动时(如果计数非零)和数据集更改时发送。
 * 数据集可能在不改变计数的情况下发生变化(例如,如果在存档消息的同步操作中出现了新的未读消息)。在这种情况下,电话应该仍然正常地响,振动等。
 */
val ACTION_PROVIDER_CHANGED = "android.intent.action.PROVIDER_CHANGED"

/**
 * 广播动作:接通或拔掉有线耳机。
 *
 * 等同于 [android.media.AudioManager.ACTION_HEADSET_PLUG]
 *
 * 如果应用程序的最小SDK版本是[android.os.Build.VERSION_CODES.LOLLIPOP],建议在你的接收器注册代码中使用' AudioManager '常量。
 */
val ACTION_HEADSET_PLUG = AudioManager.ACTION_HEADSET_PLUG

/**
 *
 * 广播动作:用户已经在设置应用中打开了高级设置:
 *  *state—指示设置是开启还是关闭的布尔值。
 *
 * @hide
 */
const val ACTION_ADVANCED_SETTINGS_CHANGED = "android.intent.action.ADVANCED_SETTINGS"

/**
 * 广播动作:改变应用限制后发送。
 */
val ACTION_APPLICATION_RESTRICTIONS_CHANGED = "android.intent.action.APPLICATION_RESTRICTIONS_CHANGED"

/**
 * 广播动作:呼叫即将呼出。
 *
 *
 * 意向将具有以下额外:
 *
 *  [android.content.Intent.EXTRA_PHONE_NUMBER] 拨打的电话号码。
 *
 * 广播完成后,resultData被用作要调用的实际号码。如果为“null”,则不进行调用。
 *
 * 让多个接收者依次处理呼出呼叫是完全可以接受的:例如,家长控制应用程序可能会验证用户当时是否被授权发起呼叫,如果没有指定区号,则数字重写应用程序可能会添加区号。
 *
 * 为了一致性,任何目的是禁止电话呼叫的接收器的优先级都应该是0,以确保它将看到最终要拨打的电话号码。
 * 任何以重写电话号码为目的的接收者都应该具有积极的优先级。为该广播的系统保留负优先级;使用它们可能会导致问题。
 *
 * 任何接收到此意图的BroadcastReceiver都不能中止广播。
 *
 * 使用此机制无法拦截紧急呼叫,也无法修改其他呼叫以使用此机制呼叫紧急号码。
 *
 * 一些应用程序(如VoIP应用程序)可能想要重定向呼出,以使用自己的服务代替。这些应用程序首先应该通过将resultData设置为' null '来阻止调用,然后启动自己的应用程序来进行调用。
 *
 * 你必须有[android.Manifest.permission.PROCESS_OUTGOING_CALLS] 权限
 */
val ACTION_NEW_OUTGOING_CALL = "android.intent.action.NEW_OUTGOING_CALL"

/**
 * 广播动作:重新启动设备。这仅供系统代码使用。
 */
val ACTION_REBOOT = "android.intent.action.REBOOT"

/**
 * 广播动作:对设备物理对接状态的变化进行粘性广播。
 * 该意图将有以下额外值:
 *  [.EXTRA_DOCK_STATE]* - 当前码头状态,指示设备物理上位于哪个码头。
 * 这用于监视当前的物理码头状态。
 * 参考 [android.app.UiModeManager]用于处理停靠模式更改的普通API。
 */
val ACTION_DOCK_EVENT = "android.intent.action.DOCK_EVENT"

/**
 * 广播动作:当可以启动空闲维护时进行广播。这
 * 意味着用户没有与设备进行交互,也不希望很快进行交互。
 * 空闲维护的典型用途是执行某种昂贵的任务,可以在某个不会降低用户体验的时刻推迟执行。
 *
 * 为了在意外的用户交互时保持设备的响应性,维护任务的实现应该是可中断的。在这种情况下,有行动的广播[ACTION_IDLE_MAINTENANCE_END]将被发送。换句话说,你不应该做维修工作
 * [BroadcastReceiver.onReceive], 而不是开始维护服务 [Context.startService]. 此外在维护服务运行时,您应该保持唤醒锁,以防止设备进入睡眠状态。
 * @see .ACTION_IDLE_MAINTENANCE_END
 * @hide
 */
val ACTION_IDLE_MAINTENANCE_START = "android.intent.action.ACTION_IDLE_MAINTENANCE_START"

/**
 * 广播动作:应该停止空闲维护时的广播。
 * 这意味着用户没有与设备交互,结果广播与动作[.ACTION_IDLE_MAINTENANCE_START]被发送,现在用户开始与设备交互。
 * 空闲维护的典型用途是执行某种昂贵的任务,可以在某个不会降低用户体验的时刻推迟执行。
 *
 *
 *
 *为了在意外的用户交互时保持设备的响应性,维护任务的实现应该是可中断的。因此,在接收到带有此操作的广播时,应该尽快中断维护任务。
 * 换句话说,您不应该在[BroadcastReceiver]中进行维护工作。onReceive],
 * 而不是停止在接收[.action_idle_maintenance_start]时启动的维护服务。此外,您应该释放您在启动维护服务时获得的唤醒锁。
 *
 *
 *
 * @see .ACTION_IDLE_MAINTENANCE_START
 *
 *
 * @hide
 */
val ACTION_IDLE_MAINTENANCE_END = "android.intent.action.ACTION_IDLE_MAINTENANCE_END"

/**
 * 广播动作:远程意图被广播。
 *
 * 远程意图用于设备之间的远程RPC。远程意图被序列化并从一个设备发送到另一个设备。
 * 接收设备解析远程意图并广播它。注意,任何人都可以广播远程意图。
 * 然而,如果远程意图的接收者不相信来自任意意图发送者的意图广播,它应该要求发送者持有一定的权限,这样只有受信任的发送者的广播才会被允许通过。
 * @hide
 */
const val ACTION_REMOTE_INTENT = "com.google.android.c2dm.intent.RECEIVE"

/**
 * 广播动作:当用户在系统更新后启动时广播一次。它可以用于在系统更新后执行清理或升级。
 *事件之后发送此广播 [.ACTION_LOCKED_BOOT_COMPLETED]广播,
 * 但在[.ACTION_BOOT_COMPLETED广播。它只在[Build.FINGERPRINT]已经改变,它只在系统映像中发送给接收器。
 *
 * @hide
 */
@SystemApi
val ACTION_PRE_BOOT_COMPLETED = "android.intent.action.PRE_BOOT_COMPLETED"

/**
 * 广播到特定的应用程序以查询对受限制用户施加的任何支持的限制。
 * 广播意图包含一个额外的[.extra_limittions_bundle],使用当前持久化的限制作为键值对的Bundle。根据限制类型,值类型可以是Boolean、String或String[]。
 *
 *
 *响应应该包含一个额外的[.extra_limittions_list],类型为' ArrayList<limittionentry> '。
 * 它还可以包含额外的[.extra_limittions_intent],类型为' Intent '。
 * 由该意图指定的活动将被启动的结果必须包含一个附加项[.EXTRA_RESTRICTIONS_LIST]或[.EXTRA_RESTRICTIONS_BUNDLE]。返回的限制的键和值将被持久化。
 * @see RestrictionEntry
 */
const val ACTION_GET_RESTRICTION_ENTRIES = "android.intent.action.GET_RESTRICTION_ENTRIES"

/**
在用户第一次启动时发送,以允许系统应用程序执行一次初始化。(第三方应用程序不会看到这一点,因为新初始化的用户没有为其安装任何第三方应用程序。)
这是在启动用户的早期发送的,大约在主应用程序启动的时候,在[.ACTION_BOOT_COMPLETED)发送。这作为前台广播发送,因为它是可见的用户交互的一部分;处理的时候要尽可能快。
 */
const val ACTION_USER_INITIALIZE = "android.intent.action.USER_INITIALIZE"

/**
当用户切换发生时发送,导致进程的用户被带到前台。
这只被发送到通过[Context.registerReceiver] [Context.registerReceiver]注册的接收者。
它被发送给要去前台的用户。这作为前台广播发送,因为它是可见的用户交互的一部分;处理的时候要尽可能快。
 */
const val ACTION_USER_FOREGROUND = "android.intent.action.USER_FOREGROUND"

/**
当用户切换发生时发送,导致进程的用户被发送到后台。
这只被发送到通过[Context.registerReceiver] [Context.registerReceiver]注册的接收者。
它被发送给后台的用户。这作为前台广播发送,因为它是可见的用户交互的一部分;处理的时候要尽可能快。
 */
const val ACTION_USER_BACKGROUND = "android.intent.action.USER_BACKGROUND"

/**
 * 添加用户时发送给系统的广播。携带额外的EXTRA_USER_HANDLE,其中包含新用户的userHandle。它被发送给所有正在运行的用户。你必须持有
 * [android.Manifest.permission.MANAGE_USERS] 接收此广播。
 * @hide
 */
const val ACTION_USER_ADDED = "android.intent.action.USER_ADDED"

/**
用户启动时系统发送的广播。携带额外的EXTRA_USER_HANDLE,其中包含用户的userHandle。
这只发送给已注册的接收者,而不是清单接收者。它被发送给已经启动的用户。这作为前台广播发送,因为它是可见的用户交互的一部分;处理的时候要尽可能快。
 * @hide
 */
const val ACTION_USER_STARTED = "android.intent.action.USER_STARTED"

/**
在用户启动过程中发送的广播。携带额外的EXTRA_USER_HANDLE,其中包含用户的userHandle。这只发送给已注册的接收者,而不是清单接收者。它被发送给所有用户(包括正在启动的用户)。
你必须持有[android.Manifest.permission.interact_crosss_users]接收此广播。
这是作为后台广播发送的,因为它的结果不是主要UX流的一部分;
为了安全地跟踪用户的启动和停止状态,你可以将它与[.action_user_stopped]结合使用。
与其他用户状态广播一起使用通常是不安全的,因为那些是前台广播,所以可以以不同的顺序执行。
 * @hide
 */
const val ACTION_USER_STARTING = "android.intent.action.USER_STARTING"

/**
当用户将被停止时发送的广播。携带额外的EXTRA_USER_HANDLE,其中包含用户的userHandle。这只发送给已注册的接收者,而不是清单接收者。它被发送给所有用户(包括正在被停止的用户)。
你必须持有[android.Manifest.permission.interact_crosss_users]接收此广播。
直到所有接收器都处理好广播,用户才会停止。这是作为后台广播发送的,因为它的结果不是主要UX流的一部分;
为了安全地跟踪用户的启动和停止状态,你可以使用[. action_user_starting]。与其他用户状态广播一起使用通常是不安全的,因为那些是前台广播,所以可以以不同的顺序执行。
 * @hide
 */
const val ACTION_USER_STOPPING = "android.intent.action.USER_STOPPING"

/**
停止用户时发送给系统的广播。携带额外的EXTRA_USER_HANDLE,其中包含用户的userHandle。这类似于[.action_package_restart],但是针对的是整个用户,而不是特定的包。
这只发送给已注册的接收者,而不是清单接收者。
它被发送给所有正在运行的用户,除了刚刚停止的用户(不再运行)。
 * @hide
 */
const val ACTION_USER_STOPPED = "android.intent.action.USER_STOPPED"

/**
 * 删除用户时发送给系统的广播。携带额外的EXTRA_USER_HANDLE,其中包含用户的userHandle。它被发送给所有运行的用户,除了已被删除的用户。
 * 在所有接收器处理完广播后,该用户才会被完全删除。你必须持有
 * [android.Manifest.permission.MANAGE_USERS] to receive this broadcast.
 * @hide
 */
@SystemApi
val ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED"

/**
用户切换时发送给系统的广播。
携带一个额外的EXTRA_USER_HANDLE,其中包含用户的userHandle,使其成为当前的userHandle。
这只发送给已注册的接收者,而不是清单接收者。它被发送给所有正在运行的用户。你必须持有
 * [android.Manifest.permission.MANAGE_USERS] 接收此广播。
 * @hide
 */
const val ACTION_USER_SWITCHED = "android.intent.action.USER_SWITCHED"

/**
广播动作:当为目标用户解锁凭据加密的私有存储时发送。这只发送给已注册的接收者,而不是清单接收者。
 */
val ACTION_USER_UNLOCKED = "android.intent.action.USER_UNLOCKED"

/**
当用户的信息发生变化时,向系统发送广播。携带一个额外的[.EXTRA_USER_HANDLE]来指示哪个用户的信息更改了。
这只发送给已注册的接收者,而不是清单接收者。它被发送给所有用户。
 * @hide
 */
const val ACTION_USER_INFO_CHANGED = "android.intent.action.USER_INFO_CHANGED"

/**
当添加关联的托管配置文件时(配置文件已创建并准备使用),向主用户发送广播。
携带一个额外的[.EXTRA_USER],指定被添加的配置文件的用户句柄。
只有需要跨主配置文件和托管配置文件显示合并内容的应用程序(例如Launchers)才需要担心这种广播。这只发送给已注册的接收者,而不是清单接收者。
 */
const val ACTION_MANAGED_PROFILE_ADDED = "android.intent.action.MANAGED_PROFILE_ADDED"

/**
当关联的托管配置文件被删除时发送给主用户的广播。
携带一个额外的[.EXTRA_USER],指定被删除的配置文件的用户句柄。只有需要跨主配置文件和托管配置文件显示合并内容的应用程序(例如Launchers)才需要担心这种广播。
这只发送给已注册的接收者,而不是清单接收者。
 */
const val ACTION_MANAGED_PROFILE_REMOVED = "android.intent.action.MANAGED_PROFILE_REMOVED"

/**
在为关联的托管概要文件解锁凭据加密的私有存储时发送给主用户的广播。
携带一个额外的[.EXTRA_USER],指定被解锁的概要文件的用户句柄。
只有需要跨主配置文件和托管配置文件显示合并内容的应用程序(例如Launchers)才需要担心这种广播。
这只发送给已注册的接收者,而不是清单接收者。
 */
const val ACTION_MANAGED_PROFILE_UNLOCKED = "android.intent.action.MANAGED_PROFILE_UNLOCKED"

/**
当关联的托管配置文件可用时,发送给主用户的广播。
目前,这包括当用户禁用配置文件的安静模式时。携带一个额外的[.EXTRA_USER],指定配置文件的用户句柄。当改变静音模式时,
此广播将携带一个额外的布尔值[。.xtra_nois_mode]表示静音模式的新状态。这只发送给已注册的接收者,而不是清单接收者。
 */
const val ACTION_MANAGED_PROFILE_AVAILABLE = "android.intent.action.MANAGED_PROFILE_AVAILABLE"

/**
当关联的托管配置文件不可用时,发送给主用户的广播。
目前,这包括当用户为配置文件启用静音模式时。携带一个额外的[.EXTRA_USER],指定配置文件的用户句柄。
当改变静音模式时,此广播将携带一个额外的布尔值[.extra_nois_mode]表示静音模式的新状态。这只发送给已注册的接收者,而不是清单接收者。
 */
const val ACTION_MANAGED_PROFILE_UNAVAILABLE = "android.intent.action.MANAGED_PROFILE_UNAVAILABLE"

/**
 * 当任何用户的“设备锁定”状态发生变化时,广播发送给系统用户。携带一个额外的[。EXTRA_USER_HANDLE],指定锁定或解锁设备的用户ID。
 * 此邮件只发送给已注册的收件人。
 * @hide
 */
const val ACTION_DEVICE_LOCKED_CHANGED = "android.intent.action.DEVICE_LOCKED_CHANGED"

/**
 * 当用户点击系统的“快速设置”区域中的时钟小部件时发送。
 */
const val ACTION_QUICK_CLOCK = "android.intent.action.QUICK_CLOCK"

/**
 * 活动动作:显示亮度设置对话框。
 * @hide
 */
const val ACTION_SHOW_BRIGHTNESS_DIALOG = "com.android.intent.action.SHOW_BRIGHTNESS_DIALOG"

/**
 * 广播动作:一个全局按钮被按下。包括一个额外的字段[。EXTRA_KEY_EVENT],包含导致广播的键事件。
 * @hide
 */
@SystemApi
val ACTION_GLOBAL_BUTTON = "android.intent.action.GLOBAL_BUTTON"

/**
 *广播动作:授予媒体资源时发送。
 *
 * [.EXTRA_PACKAGES] 指定持有授予的媒体资源的进程上的包。
 * This requires [android.Manifest.permission.RECEIVE_MEDIA_RESOURCE_USAGE] permission.
 * @hide
 */
const val ACTION_MEDIA_RESOURCE_GRANTED = "android.intent.action.MEDIA_RESOURCE_GRANTED"

/**
 * 广播动作:覆盖包已经改变。数据包含已更改的覆盖包的名称。
 * 通过[android.content.om.IOverlayManager.getOverlayInfo]返回的OverlayInfo的所有更改都会被广播。
 * 最常见的变化是状态变化,它将改变覆盖是否启用。
 * @hide
 */
const val ACTION_OVERLAY_CHANGED = "android.intent.action.OVERLAY_CHANGED"

/**
 * 活动操作:允许用户选择并返回一个或多个现有文档。
 * 调用时,系统将显示设备上安装的各种[DocumentsProvider]实例,让用户以交互方式在它们之间导航。
 * 这些文档包括本地媒体(如照片、视频等)和已安装云存储提供商提供的文档。
 *
 * 每个文档都表示为一个“content:”URI,后面是一个
 * [DocumentsProvider], 什么可以作为一条流打开
 * [ContentResolver.openFileDescriptor], 或查询
 * [android.provider.DocumentsContract.Document]元数据。
 *
 *所有选定的文档都返回给调用应用程序,并授予可持久的读写权限。如果希望跨设备重新启动维护对文档的访问,则需要使用显式获取可持久权限
 * [ContentResolver.takePersistableUriPermission].
 *
 *
*
* @see DocumentsContract
*
* @see.ACTION_OPEN_DOCUMENT_TREE
*
* @see.ACTION_CREATE_DOCUMENT
*
* @see.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
*/
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
val ACTION_OPEN_DOCUMENT = "android.intent.action.OPEN_DOCUMENT"

/**
 * 活动操作:允许用户创建一个新文档。
 * 调用时,系统将显示设备上安装的各种[DocumentsProvider]实例,让用户在它们之间导航。
 * 返回的文档可以是新创建的没有内容的文档,也可以是具有所请求MIME类型的现有文档。
 *
 *
 * @see DocumentsContract
 *
 * @see .ACTION_OPEN_DOCUMENT
 *
 * @see .ACTION_OPEN_DOCUMENT_TREE
 *
 * @see .FLAG_GRANT_PERSISTABLE_URI_PERMISSION
 */
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
val ACTION_CREATE_DOCUMENT = "android.intent.action.CREATE_DOCUMENT"

/**
 * 活动操作:允许用户选择目录子树。调用时,系统将显示设备上安装的各种[DocumentsProvider]实例,让用户在它们之间导航。应用程序可以完全管理返回目录中的文档。
 *
 *
 * Output: The URI representing the selected directory tree.
 *
 * @see DocumentsContract
 */
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
val ACTION_OPEN_DOCUMENT_TREE = "android.intent.action.OPEN_DOCUMENT_TREE"

/**
 * Broadcast Action: List of dynamic sensor is changed due to new sensor being connected or
 * exisiting sensor being disconnected.
 *
 *
 *
 * {@hide}
 */
val ACTION_DYNAMIC_SENSOR_CHANGED = "android.intent.action.DYNAMIC_SENSOR_CHANGED"


/**
 * 由RecoverySystem发送的广播意图,通知侦听器即将执行主清除(擦除)操作。
 * @hide
 */
@SystemApi
val ACTION_MASTER_CLEAR_NOTIFICATION = "android.intent.action.MASTER_CLEAR_NOTIFICATION"

/**
 * 触发工厂重置的广播动作。
 *发送方必须持有 [android.Manifest.permission.MASTER_CLEAR] 许可。工厂重置的原因应该指定为[.extra_reason]。
 * 不供第三方应用程序使用。
 * @see .EXTRA_FORCE_FACTORY_RESET
 * {@hide}
 */
@SystemApi
val ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET"

/**
 * 广播动作:当到达一个新的热事件时报告。当设备达到其最高温度时,报告的热电平
 * {@hide}
 */
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
val ACTION_THERMAL_EVENT = "android.intent.action.THERMAL_EVENT"
/**
 * 广播动作:设备停靠时,坞处于空闲状态。
 * @hide
 */
const val ACTION_DOCK_IDLE = "android.intent.action.DOCK_IDLE"

/**
 * 广播动作:设备停靠时,坞处于活动状态。
 * @hide
 */
const val ACTION_DOCK_ACTIVE = "android.intent.action.DOCK_ACTIVE"

 

 

 

 

end

posted on 2019-12-28 14:35  观心静  阅读(6689)  评论(0编辑  收藏  举报