欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

应用清单文件<intent-filter>中android:priority运用

程序员文章站 2024-01-05 15:02:04
应用清单文件中android:priority运用需求Android车机集成了高德地图,地图中涉及到在线地图、实时路况等,需要网络可用,会有跳转wifi设置的快捷按键,通过该按键能成功跳转至系统WiFi设置界面。分析地图使用Android标准的action进行跳转。调用示例如下:Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); st...

应用清单文件中android:priority运用

需求

Android车机集成了高德地图,地图中涉及到在线地图、实时路况等,需要网络可用,会有跳转wifi设置的快捷按键,通过该按键能成功跳转至系统WiFi设置界面。

分析

地图使用Android标准的action进行跳转。调用示例如下:

Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);

而车机系统中除了原生Settings应用可以响应外,针对项目功能和UI需求添加了新的设置应用,该设置应用中同样存在wifi设置项。故希望WiFi快捷响应能跳转到产品自研的设置应用中。

实现

一、原生设置中应用清单文件如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
        package="com.android.settings"
        coreApp="true"
        android:sharedUserId="android.uid.system">
        ...
        <activity
            android:name="Settings$WifiSettingsActivity"
            android:label="@string/wifi_settings"
            android:icon="@drawable/ic_settings_wireless"
            android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc"
            android:taskAffinity="com.android.settings"
            android:parentActivityName="Settings">
            <intent-filter android:priority="1">
                <action android:name="android.settings.WIFI_SETTINGS" />
                <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>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.wifi.WifiSettings" />
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                android:value="true" />
        </activity>

查看官方android:priority有如下说明:【https://developer.android.google.cn/guide/topics/manifest/intent-filter-element.html

android:priority 就处理过滤器所描述类型的 intent 而言,应该为父组件指定的优先级。此属性对 Activity和广播接收器都有意义:
它说明了某个 Activity 对与过滤器匹配的 Intent 的响应能力,这是相对于也可以响应该 Intent的其他 Activity 的响应能力。当 Intent 可由优先级不同的多个 Activity 处理时,Android 只会将优先级值较高的 Activity 视为 Intent 的潜在目标。
它控制按什么顺序执行广播接收器以接收广播消息。优先级值越高,调用顺序越靠前。(该顺序仅适用于同步消息;对于异步消息,系统会忽略该顺序。)

只有在您确实需要对接收广播施加特定顺序或想要强制 Android 优先选用某个 Activity 时,才能使用此属性。

值必须是一个整数,如“100”。数值越高,优先级也就越高。默认值为 0。

二、故在自研的设置应用中,同样添加该过滤器,设置一个更高的priority即可。

  <intent-filter android:priority="1000">
        <action android:name="android.settings.WIFI_SETTINGS" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>

经验证,使用示例代码或am start -a android.settings.WIFI_SETTINGS均可自动跳转至自研的设置应用中。

本文地址:https://blog.csdn.net/shusuanly/article/details/110640337

上一篇:

下一篇: