Loading core/java/android/widget/ActivityChooserModel.java +9 −1 Original line number Diff line number Diff line Loading @@ -16,9 +16,12 @@ package android.widget; import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.DataSetObservable; import android.os.AsyncTask; Loading Loading @@ -708,8 +711,13 @@ public class ActivityChooserModel extends DataSetObservable { final int resolveInfoCount = resolveInfos.size(); for (int i = 0; i < resolveInfoCount; i++) { ResolveInfo resolveInfo = resolveInfos.get(i); ActivityInfo activityInfo = resolveInfo.activityInfo; if (ActivityManager.checkComponentPermission(activityInfo.permission, android.os.Process.myUid(), activityInfo.applicationInfo.uid, activityInfo.exported) == PackageManager.PERMISSION_GRANTED) { mActivities.add(new ActivityResolveInfo(resolveInfo)); } } return true; } return false; Loading core/java/android/widget/ActivityChooserView.java +21 −8 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.widget; import com.android.internal.R; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; Loading @@ -27,6 +28,7 @@ import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.view.ActionProvider; import android.view.LayoutInflater; import android.view.MotionEvent; Loading Loading @@ -63,6 +65,8 @@ import android.widget.ListPopupWindow.ForwardingListener; */ public class ActivityChooserView extends ViewGroup implements ActivityChooserModelClient { private static final String LOG_TAG = "ActivityChooserView"; /** * An adapter for displaying the activities in an {@link AdapterView}. */ Loading Loading @@ -543,9 +547,9 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod } // Activity chooser content. if (mDefaultActivityButton.getVisibility() == VISIBLE) { mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); mActivityChooserContent.setBackground(mActivityChooserContentBackground); } else { mActivityChooserContent.setBackgroundDrawable(null); mActivityChooserContent.setBackground(null); } } Loading Loading @@ -577,7 +581,8 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod Intent launchIntent = mAdapter.getDataModel().chooseActivity(position); if (launchIntent != null) { launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); mContext.startActivity(launchIntent); ResolveInfo resolveInfo = mAdapter.getDataModel().getActivity(position); startActivity(launchIntent, resolveInfo); } } } break; Loading @@ -595,7 +600,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod Intent launchIntent = mAdapter.getDataModel().chooseActivity(index); if (launchIntent != null) { launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); mContext.startActivity(launchIntent); startActivity(launchIntent, defaultActivity); } } else if (view == mExpandActivityOverflowButton) { mIsSelectingDefaultActivity = false; Loading Loading @@ -632,6 +637,18 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod mOnDismissListener.onDismiss(); } } private void startActivity(Intent intent, ResolveInfo resolveInfo) { try { mContext.startActivity(intent); } catch (RuntimeException re) { CharSequence appLabel = resolveInfo.loadLabel(mContext.getPackageManager()); String message = mContext.getString( R.string.activitychooserview_choose_application_error, appLabel); Log.e(LOG_TAG, message); Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); } } } /** Loading Loading @@ -805,10 +822,6 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod return mDataModel.getHistorySize(); } public int getMaxActivityCount() { return mMaxActivityCount; } public ActivityChooserModel getDataModel() { return mDataModel; } Loading core/res/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -3901,6 +3901,9 @@ <!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] --> <string name="activitychooserview_choose_application">Choose an app</string> <!-- Error message if the share target app cannto be launched. [CHAR LIMIT=NONE] --> <string name="activitychooserview_choose_application_error">Couldn\'t launch <xliff:g id="application_name" example="Acme">%s</xliff:g></string> <!-- ShareActionProvider - accessibility support --> <!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] --> <string name="shareactionprovider_share_with">Share with</string> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -392,6 +392,7 @@ <java-symbol type="string" name="accessibility_enabled" /> <java-symbol type="string" name="activity_chooser_view_see_all" /> <java-symbol type="string" name="activitychooserview_choose_application" /> <java-symbol type="string" name="activitychooserview_choose_application_error" /> <java-symbol type="string" name="alternate_eri_file" /> <java-symbol type="string" name="alwaysUse" /> <java-symbol type="string" name="autofill_address_line_1_label_re" /> Loading Loading
core/java/android/widget/ActivityChooserModel.java +9 −1 Original line number Diff line number Diff line Loading @@ -16,9 +16,12 @@ package android.widget; import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.DataSetObservable; import android.os.AsyncTask; Loading Loading @@ -708,8 +711,13 @@ public class ActivityChooserModel extends DataSetObservable { final int resolveInfoCount = resolveInfos.size(); for (int i = 0; i < resolveInfoCount; i++) { ResolveInfo resolveInfo = resolveInfos.get(i); ActivityInfo activityInfo = resolveInfo.activityInfo; if (ActivityManager.checkComponentPermission(activityInfo.permission, android.os.Process.myUid(), activityInfo.applicationInfo.uid, activityInfo.exported) == PackageManager.PERMISSION_GRANTED) { mActivities.add(new ActivityResolveInfo(resolveInfo)); } } return true; } return false; Loading
core/java/android/widget/ActivityChooserView.java +21 −8 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.widget; import com.android.internal.R; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; Loading @@ -27,6 +28,7 @@ import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.view.ActionProvider; import android.view.LayoutInflater; import android.view.MotionEvent; Loading Loading @@ -63,6 +65,8 @@ import android.widget.ListPopupWindow.ForwardingListener; */ public class ActivityChooserView extends ViewGroup implements ActivityChooserModelClient { private static final String LOG_TAG = "ActivityChooserView"; /** * An adapter for displaying the activities in an {@link AdapterView}. */ Loading Loading @@ -543,9 +547,9 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod } // Activity chooser content. if (mDefaultActivityButton.getVisibility() == VISIBLE) { mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); mActivityChooserContent.setBackground(mActivityChooserContentBackground); } else { mActivityChooserContent.setBackgroundDrawable(null); mActivityChooserContent.setBackground(null); } } Loading Loading @@ -577,7 +581,8 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod Intent launchIntent = mAdapter.getDataModel().chooseActivity(position); if (launchIntent != null) { launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); mContext.startActivity(launchIntent); ResolveInfo resolveInfo = mAdapter.getDataModel().getActivity(position); startActivity(launchIntent, resolveInfo); } } } break; Loading @@ -595,7 +600,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod Intent launchIntent = mAdapter.getDataModel().chooseActivity(index); if (launchIntent != null) { launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); mContext.startActivity(launchIntent); startActivity(launchIntent, defaultActivity); } } else if (view == mExpandActivityOverflowButton) { mIsSelectingDefaultActivity = false; Loading Loading @@ -632,6 +637,18 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod mOnDismissListener.onDismiss(); } } private void startActivity(Intent intent, ResolveInfo resolveInfo) { try { mContext.startActivity(intent); } catch (RuntimeException re) { CharSequence appLabel = resolveInfo.loadLabel(mContext.getPackageManager()); String message = mContext.getString( R.string.activitychooserview_choose_application_error, appLabel); Log.e(LOG_TAG, message); Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); } } } /** Loading Loading @@ -805,10 +822,6 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod return mDataModel.getHistorySize(); } public int getMaxActivityCount() { return mMaxActivityCount; } public ActivityChooserModel getDataModel() { return mDataModel; } Loading
core/res/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -3901,6 +3901,9 @@ <!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] --> <string name="activitychooserview_choose_application">Choose an app</string> <!-- Error message if the share target app cannto be launched. [CHAR LIMIT=NONE] --> <string name="activitychooserview_choose_application_error">Couldn\'t launch <xliff:g id="application_name" example="Acme">%s</xliff:g></string> <!-- ShareActionProvider - accessibility support --> <!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] --> <string name="shareactionprovider_share_with">Share with</string> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -392,6 +392,7 @@ <java-symbol type="string" name="accessibility_enabled" /> <java-symbol type="string" name="activity_chooser_view_see_all" /> <java-symbol type="string" name="activitychooserview_choose_application" /> <java-symbol type="string" name="activitychooserview_choose_application_error" /> <java-symbol type="string" name="alternate_eri_file" /> <java-symbol type="string" name="alwaysUse" /> <java-symbol type="string" name="autofill_address_line_1_label_re" /> Loading