Most visited

Recently visited

Added in API level 23

ChooserTargetService

public abstract class ChooserTargetService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Service
         ↳ android.service.chooser.ChooserTargetService


当用户被要求为另一个应用程序显式选择目标时,接收系统调用的服务。 调用应用程序必须调用由系统处理的ACTION_CHOOSER ; 应用程序无法直接查询ChooserTargetService。

哪些ChooserTargetServices被查询取决于调用选择器时调用的系统级策略决策,包括但不限于在前台使用应用程序包或相关组件的用户时间,最近使用率或使用频率。 这些通常与系统选择器或解析器中显示的意向处理程序列表中显示的应用程序目标的顺序相关。

要扩展此类,您必须在清单文件中声明服务, BIND_CHOOSER_TARGET_SERVICE具有BIND_CHOOSER_TARGET_SERVICE权限,并包含SERVICE_INTERFACE操作的意图过滤器。 例如:

     <service android:name=".MyChooserTargetService"
             android:label="@string/service_name"
             android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
         <intent-filter>
             <action android:name="android.service.chooser.ChooserTargetService" />
         </intent-filter>
     </service>
 

为了让系统查询你的服务,你必须在清单中的Activity中添加一个<meta-data>元素,它可以处理Intents,你也希望提供可选的深层链接。 例如,一个聊天应用程序可能会提供到最近活动对话的深层链接,而不是在将应用程序本身选为目标后调用通用选择器。

元数据元素应具有名称android.service.chooser.chooser_target_service和与您的服务的组件名称相对应的值。 例:

     <activity android:name=".MyShareActivity"
             android:label="@string/share_activity_label">
         <intent-filter>
             <action android:name="android.intent.action.SEND" />
         </intent-filter>
         <meta-data android:name="android.service.chooser.chooser_target_service"
                 android:value=".MyChooserTargetService" />
     </activity>
 

Summary

Constants

String BIND_PERMISSION

ChooserTargetService必须要求绑定到它的权限。

String META_DATA_NAME

meta-data元素上必须存在的 activity元素的名称,以将其链接到ChooserTargetService

String SERVICE_INTERFACE

ChooserTargetService必须响应的Intent操作

Inherited constants

From class android.app.Service
From class android.content.Context
From interface android.content.ComponentCallbacks2

Public constructors

ChooserTargetService()

Public methods

IBinder onBind(Intent intent)

将通信信道返回给服务。

abstract List<ChooserTarget> onGetChooserTargets(ComponentName targetActivityName, IntentFilter matchedFilter)

由系统调用以检索可处理意图的一组深度链接 targets

Inherited methods

From class android.app.Service
From class android.content.ContextWrapper
From class android.content.Context
From class java.lang.Object
From interface android.content.ComponentCallbacks2
From interface android.content.ComponentCallbacks

Constants

BIND_PERMISSION

Added in API level 23
String BIND_PERMISSION

ChooserTargetService必须要求绑定到它的权限。 如果未强制执行此权限,系统将跳过该ChooserTargetService。

常量值:“android.permission.BIND_CHOOSER_TARGET_SERVICE”

META_DATA_NAME

Added in API level 23
String META_DATA_NAME

meta-data中的 meta-data元素上必须存在的 activity元素的名称,以将其链接到ChooserTargetService

常量值:“android.service.chooser.chooser_target_service”

SERVICE_INTERFACE

Added in API level 23
String SERVICE_INTERFACE

ChooserTargetService必须响应的Intent操作

常量值:“android.service.chooser.ChooserTargetService”

Public constructors

ChooserTargetService

Added in API level 23
ChooserTargetService ()

Public methods

onBind

Added in API level 23
IBinder onBind (Intent intent)

将通信信道返回给服务。 如果客户端无法绑定到服务,可能会返回null。 返回IBinder通常是一个复杂的界面已经described using aidl

请注意,与其他应用程序组件不同,此处返回的IBinder接口调用可能不会发生在进程的主线程上 有关主线程的更多信息可以在Processes and Threads中找到。

Parameters
intent Intent: The Intent that was used to bind to this service, as given to Context.bindService. Note that any extras that were included with the Intent at that point will not be seen here.
Returns
IBinder Return an IBinder through which clients can call on to the service.

onGetChooserTargets

Added in API level 23
List<ChooserTarget> onGetChooserTargets (ComponentName targetActivityName, 
                IntentFilter matchedFilter)

由系统调用以检索可处理意图的一组深度链接 targets

返回的列表应该排序,以便最相关的目标首先出现。 每个ChooserTarget的分数将与原始目标活动的系统分数相结合,以对呈现给用户的目标进行排序和筛选。

重要提示:从其他应用程序调用此方法将发生在联编程序线程上,而不是在您的应用程序的主线程上。 确保在您的应用中访问相关数据是线程安全的。

Parameters
targetActivityName ComponentName: the ComponentName of the matched activity that referred the system to this ChooserTargetService
matchedFilter IntentFilter: the specific IntentFilter on the component that was matched
Returns
List<ChooserTarget> a list of deep-link targets to fulfill the intent match, sorted by relevance

Hooray!