Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86bfb3af authored by Svetoslav's avatar Svetoslav Committed by Android (Google) Code Review
Browse files

Merge "Not show share targets that cannot be launched." into klp-dev

parents 2b5297a4 baeabb65
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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;
+21 −8
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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}.
     */
@@ -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);
        }
    }

@@ -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;
@@ -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;
@@ -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();
            }
        }
    }

    /**
@@ -805,10 +822,6 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
            return mDataModel.getHistorySize();
        }

        public int getMaxActivityCount() {
            return mMaxActivityCount;
        }

        public ActivityChooserModel getDataModel() {
            return mDataModel;
        }
+3 −0
Original line number Diff line number Diff line
@@ -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>
+1 −0
Original line number Diff line number Diff line
@@ -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" />