146 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 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);
 | |
|     }
 | |
| }
 |