Loading Android.mk +3 −0 Original line number Diff line number Diff line Loading @@ -238,6 +238,8 @@ LOCAL_SRC_FILES += \ core/java/android/service/wallpaper/IWallpaperConnection.aidl \ core/java/android/service/wallpaper/IWallpaperEngine.aidl \ core/java/android/service/wallpaper/IWallpaperService.aidl \ core/java/android/service/chooser/IChooserTargetService.aidl \ core/java/android/service/chooser/IChooserTargetResult.aidl \ core/java/android/view/accessibility/IAccessibilityInteractionConnection.aidl\ core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl\ core/java/android/view/accessibility/IAccessibilityManager.aidl \ Loading Loading @@ -545,6 +547,7 @@ aidl_files := \ frameworks/base/core/java/android/view/textservice/SuggestionsInfo.aidl \ frameworks/base/core/java/android/service/carrier/MessagePdu.aidl \ frameworks/base/core/java/android/service/notification/StatusBarNotification.aidl \ frameworks/base/core/java/android/service/chooser/ChooserTarget.aidl \ frameworks/base/core/java/android/speech/tts/Voice.aidl \ frameworks/base/core/java/android/app/usage/UsageEvents.aidl \ frameworks/base/core/java/android/app/Notification.aidl \ Loading api/current.txt +25 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ package android { field public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE"; field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET"; field public static final java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE"; field public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE"; field public static final java.lang.String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN"; field public static final java.lang.String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE"; field public static final java.lang.String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD"; Loading Loading @@ -27459,6 +27460,30 @@ package android.service.carrier { } package android.service.chooser { public final class ChooserTarget implements android.os.Parcelable { ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.app.PendingIntent); ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.content.IntentSender); method public int describeContents(); method public android.graphics.Bitmap getIcon(); method public android.content.IntentSender getIntentSender(); method public float getScore(); method public java.lang.CharSequence getTitle(); method public boolean sendIntent(android.content.Context, android.content.Intent); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR; } public abstract class ChooserTargetService extends android.app.Service { ctor public ChooserTargetService(); method public android.os.IBinder onBind(android.content.Intent); method public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter); field public static final java.lang.String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService"; } } package android.service.dreams { public class DreamService extends android.app.Service implements android.view.Window.Callback { api/system-current.txt +25 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ package android { field public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE"; field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET"; field public static final java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE"; field public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE"; field public static final java.lang.String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE"; field public static final java.lang.String BIND_CONNECTION_SERVICE = "android.permission.BIND_CONNECTION_SERVICE"; field public static final java.lang.String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN"; Loading Loading @@ -29060,6 +29061,30 @@ package android.service.carrier { } package android.service.chooser { public final class ChooserTarget implements android.os.Parcelable { ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.app.PendingIntent); ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.content.IntentSender); method public int describeContents(); method public android.graphics.Bitmap getIcon(); method public android.content.IntentSender getIntentSender(); method public float getScore(); method public java.lang.CharSequence getTitle(); method public boolean sendIntent(android.content.Context, android.content.Intent); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR; } public abstract class ChooserTargetService extends android.app.Service { ctor public ChooserTargetService(); method public android.os.IBinder onBind(android.content.Intent); method public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter); field public static final java.lang.String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService"; } } package android.service.dreams { public class DreamService extends android.app.Service implements android.view.Window.Callback { core/java/android/service/chooser/ChooserTarget.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.service.chooser; parcelable ChooserTarget; core/java/android/service/chooser/ChooserTarget.java 0 → 100644 +248 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.service.chooser; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.IntentSender; import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; /** * A ChooserTarget represents a deep-link into an application as returned by a * {@link android.service.chooser.ChooserTargetService}. */ public final class ChooserTarget implements Parcelable { private static final String TAG = "ChooserTarget"; /** * The title of this target that will be shown to the user. The title may be truncated * if it is too long to display in the space provided. */ private CharSequence mTitle; /** * The icon that will be shown to the user to represent this target. * The system may resize this icon as appropriate. */ private Bitmap mIcon; /** * The IntentSender that will be used to deliver the intent to the target. * It will be {@link android.content.Intent#fillIn(android.content.Intent, int)} filled in} * by the real intent sent by the application. */ private IntentSender mIntentSender; /** * The score given to this item. It can be normalized. */ private float mScore; /** * Construct a deep link target for presentation by a chooser UI. * * <p>A target is composed of a title and an icon for presentation to the user. * The UI presenting this target may truncate the title if it is too long to be presented * in the available space, as well as crop, resize or overlay the supplied icon.</p> * * <p>The creator of a target may supply a ranking score. This score is assumed to be relative * to the other targets supplied by the same * {@link ChooserTargetService#onGetChooserTargets(ComponentName, IntentFilter) query}. * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).</p> * * <p>Before being sent, the PendingIntent supplied will be * {@link Intent#fillIn(Intent, int) filled in} by the Intent originally supplied * to the chooser. When constructing a PendingIntent for use in a ChooserTarget, make sure * that you permit the relevant fields to be filled in using the appropriate flags such as * {@link Intent#FILL_IN_ACTION}, {@link Intent#FILL_IN_CATEGORIES}, * {@link Intent#FILL_IN_DATA} and {@link Intent#FILL_IN_CLIP_DATA}. Note that * {@link Intent#FILL_IN_CLIP_DATA} is required to appropriately receive URI permission grants * for {@link Intent#ACTION_SEND} intents.</p> * * <p>Take care not to place custom {@link android.os.Parcelable} types into * the PendingIntent as extras, as the system will not be able to unparcel it to merge * additional extras.</p> * * @param title title of this target that will be shown to a user * @param icon icon to represent this target * @param score ranking score for this target between 0.0f and 1.0f, inclusive * @param pendingIntent PendingIntent to fill in and send if the user chooses this target */ public ChooserTarget(CharSequence title, Bitmap icon, float score, PendingIntent pendingIntent) { this(title, icon, score, pendingIntent.getIntentSender()); } /** * Construct a deep link target for presentation by a chooser UI. * * <p>A target is composed of a title and an icon for presentation to the user. * The UI presenting this target may truncate the title if it is too long to be presented * in the available space, as well as crop, resize or overlay the supplied icon.</p> * * <p>The creator of a target may supply a ranking score. This score is assumed to be relative * to the other targets supplied by the same * {@link ChooserTargetService#onGetChooserTargets(ComponentName, IntentFilter) query}. * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).</p> * * <p>Before being sent, the IntentSender supplied will be * {@link Intent#fillIn(Intent, int) filled in} by the Intent originally supplied * to the chooser. When constructing an IntentSender for use in a ChooserTarget, make sure * that you permit the relevant fields to be filled in using the appropriate flags such as * {@link Intent#FILL_IN_ACTION}, {@link Intent#FILL_IN_CATEGORIES}, * {@link Intent#FILL_IN_DATA} and {@link Intent#FILL_IN_CLIP_DATA}. Note that * {@link Intent#FILL_IN_CLIP_DATA} is required to appropriately receive URI permission grants * for {@link Intent#ACTION_SEND} intents.</p> * * <p>Take care not to place custom {@link android.os.Parcelable} types into * the IntentSender as extras, as the system will not be able to unparcel it to merge * additional extras.</p> * * @param title title of this target that will be shown to a user * @param icon icon to represent this target * @param score ranking score for this target between 0.0f and 1.0f, inclusive * @param intentSender IntentSender to fill in and send if the user chooses this target */ public ChooserTarget(CharSequence title, Bitmap icon, float score, IntentSender intentSender) { mTitle = title; mIcon = icon; if (score > 1.f || score < 0.f) { throw new IllegalArgumentException("Score " + score + " out of range; " + "must be between 0.0f and 1.0f"); } mScore = score; mIntentSender = intentSender; } ChooserTarget(Parcel in) { mTitle = in.readCharSequence(); if (in.readInt() != 0) { mIcon = Bitmap.CREATOR.createFromParcel(in); } else { mIcon = null; } mScore = in.readFloat(); mIntentSender = IntentSender.readIntentSenderOrNullFromParcel(in); } /** * Returns the title of this target for display to a user. The UI displaying the title * may truncate this title if it is too long to be displayed in full. * * @return the title of this target, intended to be shown to a user */ public CharSequence getTitle() { return mTitle; } /** * Returns the icon representing this target for display to a user. The UI displaying the icon * may crop, resize or overlay this icon. * * @return the icon representing this target, intended to be shown to a user */ public Bitmap getIcon() { return mIcon; } /** * Returns the ranking score supplied by the creator of this ChooserTarget. * Values are between 0.0f and 1.0f. The UI displaying the target may * take this score into account when sorting and merging targets from multiple sources. * * @return the ranking score for this target between 0.0f and 1.0f, inclusive */ public float getScore() { return mScore; } /** * Returns the raw IntentSender supplied by the ChooserTarget's creator. * * <p>To fill in and send the intent, see {@link #sendIntent(Context, Intent)}.</p> * * @return the IntentSender supplied by the ChooserTarget's creator */ public IntentSender getIntentSender() { return mIntentSender; } /** * Fill in the IntentSender supplied by the ChooserTarget's creator and send it. * * @param context the sending Context; generally the Activity presenting the chooser UI * @param fillInIntent the Intent provided to the Chooser to be sent to a selected target * @return true if sending the Intent was successful */ public boolean sendIntent(Context context, Intent fillInIntent) { if (fillInIntent != null) { fillInIntent.migrateExtraStreamToClipData(); fillInIntent.prepareToLeaveProcess(); } try { mIntentSender.sendIntent(context, 0, fillInIntent, null, null); return true; } catch (IntentSender.SendIntentException e) { Log.e(TAG, "sendIntent " + this + " failed", e); return false; } } @Override public String toString() { return "ChooserTarget{" + mIntentSender.getCreatorPackage() + "'" + mTitle + "', " + mScore + "}"; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeCharSequence(mTitle); if (mIcon != null) { dest.writeInt(1); mIcon.writeToParcel(dest, 0); } else { dest.writeInt(0); } dest.writeFloat(mScore); IntentSender.writeIntentSenderOrNullToParcel(mIntentSender, dest); } public static final Creator<ChooserTarget> CREATOR = new Creator<ChooserTarget>() { @Override public ChooserTarget createFromParcel(Parcel source) { return new ChooserTarget(source); } @Override public ChooserTarget[] newArray(int size) { return new ChooserTarget[size]; } }; } Loading
Android.mk +3 −0 Original line number Diff line number Diff line Loading @@ -238,6 +238,8 @@ LOCAL_SRC_FILES += \ core/java/android/service/wallpaper/IWallpaperConnection.aidl \ core/java/android/service/wallpaper/IWallpaperEngine.aidl \ core/java/android/service/wallpaper/IWallpaperService.aidl \ core/java/android/service/chooser/IChooserTargetService.aidl \ core/java/android/service/chooser/IChooserTargetResult.aidl \ core/java/android/view/accessibility/IAccessibilityInteractionConnection.aidl\ core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl\ core/java/android/view/accessibility/IAccessibilityManager.aidl \ Loading Loading @@ -545,6 +547,7 @@ aidl_files := \ frameworks/base/core/java/android/view/textservice/SuggestionsInfo.aidl \ frameworks/base/core/java/android/service/carrier/MessagePdu.aidl \ frameworks/base/core/java/android/service/notification/StatusBarNotification.aidl \ frameworks/base/core/java/android/service/chooser/ChooserTarget.aidl \ frameworks/base/core/java/android/speech/tts/Voice.aidl \ frameworks/base/core/java/android/app/usage/UsageEvents.aidl \ frameworks/base/core/java/android/app/Notification.aidl \ Loading
api/current.txt +25 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ package android { field public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE"; field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET"; field public static final java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE"; field public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE"; field public static final java.lang.String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN"; field public static final java.lang.String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE"; field public static final java.lang.String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD"; Loading Loading @@ -27459,6 +27460,30 @@ package android.service.carrier { } package android.service.chooser { public final class ChooserTarget implements android.os.Parcelable { ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.app.PendingIntent); ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.content.IntentSender); method public int describeContents(); method public android.graphics.Bitmap getIcon(); method public android.content.IntentSender getIntentSender(); method public float getScore(); method public java.lang.CharSequence getTitle(); method public boolean sendIntent(android.content.Context, android.content.Intent); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR; } public abstract class ChooserTargetService extends android.app.Service { ctor public ChooserTargetService(); method public android.os.IBinder onBind(android.content.Intent); method public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter); field public static final java.lang.String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService"; } } package android.service.dreams { public class DreamService extends android.app.Service implements android.view.Window.Callback {
api/system-current.txt +25 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ package android { field public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE"; field public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET"; field public static final java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE"; field public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE"; field public static final java.lang.String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE"; field public static final java.lang.String BIND_CONNECTION_SERVICE = "android.permission.BIND_CONNECTION_SERVICE"; field public static final java.lang.String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN"; Loading Loading @@ -29060,6 +29061,30 @@ package android.service.carrier { } package android.service.chooser { public final class ChooserTarget implements android.os.Parcelable { ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.app.PendingIntent); ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.content.IntentSender); method public int describeContents(); method public android.graphics.Bitmap getIcon(); method public android.content.IntentSender getIntentSender(); method public float getScore(); method public java.lang.CharSequence getTitle(); method public boolean sendIntent(android.content.Context, android.content.Intent); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR; } public abstract class ChooserTargetService extends android.app.Service { ctor public ChooserTargetService(); method public android.os.IBinder onBind(android.content.Intent); method public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter); field public static final java.lang.String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService"; } } package android.service.dreams { public class DreamService extends android.app.Service implements android.view.Window.Callback {
core/java/android/service/chooser/ChooserTarget.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.service.chooser; parcelable ChooserTarget;
core/java/android/service/chooser/ChooserTarget.java 0 → 100644 +248 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.service.chooser; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.IntentSender; import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; /** * A ChooserTarget represents a deep-link into an application as returned by a * {@link android.service.chooser.ChooserTargetService}. */ public final class ChooserTarget implements Parcelable { private static final String TAG = "ChooserTarget"; /** * The title of this target that will be shown to the user. The title may be truncated * if it is too long to display in the space provided. */ private CharSequence mTitle; /** * The icon that will be shown to the user to represent this target. * The system may resize this icon as appropriate. */ private Bitmap mIcon; /** * The IntentSender that will be used to deliver the intent to the target. * It will be {@link android.content.Intent#fillIn(android.content.Intent, int)} filled in} * by the real intent sent by the application. */ private IntentSender mIntentSender; /** * The score given to this item. It can be normalized. */ private float mScore; /** * Construct a deep link target for presentation by a chooser UI. * * <p>A target is composed of a title and an icon for presentation to the user. * The UI presenting this target may truncate the title if it is too long to be presented * in the available space, as well as crop, resize or overlay the supplied icon.</p> * * <p>The creator of a target may supply a ranking score. This score is assumed to be relative * to the other targets supplied by the same * {@link ChooserTargetService#onGetChooserTargets(ComponentName, IntentFilter) query}. * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).</p> * * <p>Before being sent, the PendingIntent supplied will be * {@link Intent#fillIn(Intent, int) filled in} by the Intent originally supplied * to the chooser. When constructing a PendingIntent for use in a ChooserTarget, make sure * that you permit the relevant fields to be filled in using the appropriate flags such as * {@link Intent#FILL_IN_ACTION}, {@link Intent#FILL_IN_CATEGORIES}, * {@link Intent#FILL_IN_DATA} and {@link Intent#FILL_IN_CLIP_DATA}. Note that * {@link Intent#FILL_IN_CLIP_DATA} is required to appropriately receive URI permission grants * for {@link Intent#ACTION_SEND} intents.</p> * * <p>Take care not to place custom {@link android.os.Parcelable} types into * the PendingIntent as extras, as the system will not be able to unparcel it to merge * additional extras.</p> * * @param title title of this target that will be shown to a user * @param icon icon to represent this target * @param score ranking score for this target between 0.0f and 1.0f, inclusive * @param pendingIntent PendingIntent to fill in and send if the user chooses this target */ public ChooserTarget(CharSequence title, Bitmap icon, float score, PendingIntent pendingIntent) { this(title, icon, score, pendingIntent.getIntentSender()); } /** * Construct a deep link target for presentation by a chooser UI. * * <p>A target is composed of a title and an icon for presentation to the user. * The UI presenting this target may truncate the title if it is too long to be presented * in the available space, as well as crop, resize or overlay the supplied icon.</p> * * <p>The creator of a target may supply a ranking score. This score is assumed to be relative * to the other targets supplied by the same * {@link ChooserTargetService#onGetChooserTargets(ComponentName, IntentFilter) query}. * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).</p> * * <p>Before being sent, the IntentSender supplied will be * {@link Intent#fillIn(Intent, int) filled in} by the Intent originally supplied * to the chooser. When constructing an IntentSender for use in a ChooserTarget, make sure * that you permit the relevant fields to be filled in using the appropriate flags such as * {@link Intent#FILL_IN_ACTION}, {@link Intent#FILL_IN_CATEGORIES}, * {@link Intent#FILL_IN_DATA} and {@link Intent#FILL_IN_CLIP_DATA}. Note that * {@link Intent#FILL_IN_CLIP_DATA} is required to appropriately receive URI permission grants * for {@link Intent#ACTION_SEND} intents.</p> * * <p>Take care not to place custom {@link android.os.Parcelable} types into * the IntentSender as extras, as the system will not be able to unparcel it to merge * additional extras.</p> * * @param title title of this target that will be shown to a user * @param icon icon to represent this target * @param score ranking score for this target between 0.0f and 1.0f, inclusive * @param intentSender IntentSender to fill in and send if the user chooses this target */ public ChooserTarget(CharSequence title, Bitmap icon, float score, IntentSender intentSender) { mTitle = title; mIcon = icon; if (score > 1.f || score < 0.f) { throw new IllegalArgumentException("Score " + score + " out of range; " + "must be between 0.0f and 1.0f"); } mScore = score; mIntentSender = intentSender; } ChooserTarget(Parcel in) { mTitle = in.readCharSequence(); if (in.readInt() != 0) { mIcon = Bitmap.CREATOR.createFromParcel(in); } else { mIcon = null; } mScore = in.readFloat(); mIntentSender = IntentSender.readIntentSenderOrNullFromParcel(in); } /** * Returns the title of this target for display to a user. The UI displaying the title * may truncate this title if it is too long to be displayed in full. * * @return the title of this target, intended to be shown to a user */ public CharSequence getTitle() { return mTitle; } /** * Returns the icon representing this target for display to a user. The UI displaying the icon * may crop, resize or overlay this icon. * * @return the icon representing this target, intended to be shown to a user */ public Bitmap getIcon() { return mIcon; } /** * Returns the ranking score supplied by the creator of this ChooserTarget. * Values are between 0.0f and 1.0f. The UI displaying the target may * take this score into account when sorting and merging targets from multiple sources. * * @return the ranking score for this target between 0.0f and 1.0f, inclusive */ public float getScore() { return mScore; } /** * Returns the raw IntentSender supplied by the ChooserTarget's creator. * * <p>To fill in and send the intent, see {@link #sendIntent(Context, Intent)}.</p> * * @return the IntentSender supplied by the ChooserTarget's creator */ public IntentSender getIntentSender() { return mIntentSender; } /** * Fill in the IntentSender supplied by the ChooserTarget's creator and send it. * * @param context the sending Context; generally the Activity presenting the chooser UI * @param fillInIntent the Intent provided to the Chooser to be sent to a selected target * @return true if sending the Intent was successful */ public boolean sendIntent(Context context, Intent fillInIntent) { if (fillInIntent != null) { fillInIntent.migrateExtraStreamToClipData(); fillInIntent.prepareToLeaveProcess(); } try { mIntentSender.sendIntent(context, 0, fillInIntent, null, null); return true; } catch (IntentSender.SendIntentException e) { Log.e(TAG, "sendIntent " + this + " failed", e); return false; } } @Override public String toString() { return "ChooserTarget{" + mIntentSender.getCreatorPackage() + "'" + mTitle + "', " + mScore + "}"; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeCharSequence(mTitle); if (mIcon != null) { dest.writeInt(1); mIcon.writeToParcel(dest, 0); } else { dest.writeInt(0); } dest.writeFloat(mScore); IntentSender.writeIntentSenderOrNullToParcel(mIntentSender, dest); } public static final Creator<ChooserTarget> CREATOR = new Creator<ChooserTarget>() { @Override public ChooserTarget createFromParcel(Parcel source) { return new ChooserTarget(source); } @Override public ChooserTarget[] newArray(int size) { return new ChooserTarget[size]; } }; }