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