ADD week 5
This commit is contained in:
		| @@ -0,0 +1,145 @@ | ||||
| package androidx.appcompat.widget; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.content.pm.ResolveInfo; | ||||
| import android.util.TypedValue; | ||||
| import android.view.MenuItem; | ||||
| import android.view.SubMenu; | ||||
| import android.view.View; | ||||
| import androidx.appcompat.R; | ||||
| import androidx.appcompat.content.res.AppCompatResources; | ||||
| import androidx.appcompat.widget.ActivityChooserModel; | ||||
| import androidx.core.view.ActionProvider; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ShareActionProvider extends ActionProvider { | ||||
|     private static final int DEFAULT_INITIAL_ACTIVITY_COUNT = 4; | ||||
|     public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml"; | ||||
|     final Context mContext; | ||||
|     private int mMaxShownActivityCount; | ||||
|     private ActivityChooserModel.OnChooseActivityListener mOnChooseActivityListener; | ||||
|     private final ShareMenuItemOnMenuItemClickListener mOnMenuItemClickListener; | ||||
|     OnShareTargetSelectedListener mOnShareTargetSelectedListener; | ||||
|     String mShareHistoryFileName; | ||||
|  | ||||
|     public interface OnShareTargetSelectedListener { | ||||
|         boolean onShareTargetSelected(ShareActionProvider shareActionProvider, Intent intent); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.ActionProvider | ||||
|     public boolean hasSubMenu() { | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public ShareActionProvider(Context context) { | ||||
|         super(context); | ||||
|         this.mMaxShownActivityCount = 4; | ||||
|         this.mOnMenuItemClickListener = new ShareMenuItemOnMenuItemClickListener(); | ||||
|         this.mShareHistoryFileName = DEFAULT_SHARE_HISTORY_FILE_NAME; | ||||
|         this.mContext = context; | ||||
|     } | ||||
|  | ||||
|     public void setOnShareTargetSelectedListener(OnShareTargetSelectedListener onShareTargetSelectedListener) { | ||||
|         this.mOnShareTargetSelectedListener = onShareTargetSelectedListener; | ||||
|         setActivityChooserPolicyIfNeeded(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.ActionProvider | ||||
|     public View onCreateActionView() { | ||||
|         ActivityChooserView activityChooserView = new ActivityChooserView(this.mContext); | ||||
|         if (!activityChooserView.isInEditMode()) { | ||||
|             activityChooserView.setActivityChooserModel(ActivityChooserModel.get(this.mContext, this.mShareHistoryFileName)); | ||||
|         } | ||||
|         TypedValue typedValue = new TypedValue(); | ||||
|         this.mContext.getTheme().resolveAttribute(R.attr.actionModeShareDrawable, typedValue, true); | ||||
|         activityChooserView.setExpandActivityOverflowButtonDrawable(AppCompatResources.getDrawable(this.mContext, typedValue.resourceId)); | ||||
|         activityChooserView.setProvider(this); | ||||
|         activityChooserView.setDefaultActionButtonContentDescription(R.string.abc_shareactionprovider_share_with_application); | ||||
|         activityChooserView.setExpandActivityOverflowButtonContentDescription(R.string.abc_shareactionprovider_share_with); | ||||
|         return activityChooserView; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.ActionProvider | ||||
|     public void onPrepareSubMenu(SubMenu subMenu) { | ||||
|         subMenu.clear(); | ||||
|         ActivityChooserModel activityChooserModel = ActivityChooserModel.get(this.mContext, this.mShareHistoryFileName); | ||||
|         PackageManager packageManager = this.mContext.getPackageManager(); | ||||
|         int activityCount = activityChooserModel.getActivityCount(); | ||||
|         int min = Math.min(activityCount, this.mMaxShownActivityCount); | ||||
|         for (int i = 0; i < min; i++) { | ||||
|             ResolveInfo activity = activityChooserModel.getActivity(i); | ||||
|             subMenu.add(0, i, i, activity.loadLabel(packageManager)).setIcon(activity.loadIcon(packageManager)).setOnMenuItemClickListener(this.mOnMenuItemClickListener); | ||||
|         } | ||||
|         if (min < activityCount) { | ||||
|             SubMenu addSubMenu = subMenu.addSubMenu(0, min, min, this.mContext.getString(R.string.abc_activity_chooser_view_see_all)); | ||||
|             for (int i2 = 0; i2 < activityCount; i2++) { | ||||
|                 ResolveInfo activity2 = activityChooserModel.getActivity(i2); | ||||
|                 addSubMenu.add(0, i2, i2, activity2.loadLabel(packageManager)).setIcon(activity2.loadIcon(packageManager)).setOnMenuItemClickListener(this.mOnMenuItemClickListener); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void setShareHistoryFileName(String str) { | ||||
|         this.mShareHistoryFileName = str; | ||||
|         setActivityChooserPolicyIfNeeded(); | ||||
|     } | ||||
|  | ||||
|     public void setShareIntent(Intent intent) { | ||||
|         if (intent != null) { | ||||
|             String action = intent.getAction(); | ||||
|             if ("android.intent.action.SEND".equals(action) || "android.intent.action.SEND_MULTIPLE".equals(action)) { | ||||
|                 updateIntent(intent); | ||||
|             } | ||||
|         } | ||||
|         ActivityChooserModel.get(this.mContext, this.mShareHistoryFileName).setIntent(intent); | ||||
|     } | ||||
|  | ||||
|     private class ShareMenuItemOnMenuItemClickListener implements MenuItem.OnMenuItemClickListener { | ||||
|         ShareMenuItemOnMenuItemClickListener() { | ||||
|         } | ||||
|  | ||||
|         @Override // android.view.MenuItem.OnMenuItemClickListener | ||||
|         public boolean onMenuItemClick(MenuItem menuItem) { | ||||
|             Intent chooseActivity = ActivityChooserModel.get(ShareActionProvider.this.mContext, ShareActionProvider.this.mShareHistoryFileName).chooseActivity(menuItem.getItemId()); | ||||
|             if (chooseActivity == null) { | ||||
|                 return true; | ||||
|             } | ||||
|             String action = chooseActivity.getAction(); | ||||
|             if ("android.intent.action.SEND".equals(action) || "android.intent.action.SEND_MULTIPLE".equals(action)) { | ||||
|                 ShareActionProvider.this.updateIntent(chooseActivity); | ||||
|             } | ||||
|             ShareActionProvider.this.mContext.startActivity(chooseActivity); | ||||
|             return true; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void setActivityChooserPolicyIfNeeded() { | ||||
|         if (this.mOnShareTargetSelectedListener == null) { | ||||
|             return; | ||||
|         } | ||||
|         if (this.mOnChooseActivityListener == null) { | ||||
|             this.mOnChooseActivityListener = new ShareActivityChooserModelPolicy(); | ||||
|         } | ||||
|         ActivityChooserModel.get(this.mContext, this.mShareHistoryFileName).setOnChooseActivityListener(this.mOnChooseActivityListener); | ||||
|     } | ||||
|  | ||||
|     private class ShareActivityChooserModelPolicy implements ActivityChooserModel.OnChooseActivityListener { | ||||
|         ShareActivityChooserModelPolicy() { | ||||
|         } | ||||
|  | ||||
|         @Override // androidx.appcompat.widget.ActivityChooserModel.OnChooseActivityListener | ||||
|         public boolean onChooseActivity(ActivityChooserModel activityChooserModel, Intent intent) { | ||||
|             if (ShareActionProvider.this.mOnShareTargetSelectedListener == null) { | ||||
|                 return false; | ||||
|             } | ||||
|             ShareActionProvider.this.mOnShareTargetSelectedListener.onShareTargetSelected(ShareActionProvider.this, intent); | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void updateIntent(Intent intent) { | ||||
|         intent.addFlags(134742016); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user