am 86bfb3af: Merge "Not show share targets that cannot be launched." into klp-dev
* commit '86bfb3af4296a1263cb2c01a9e87b5b20015fedb': Not show share targets that cannot be launched.
This commit is contained in:
@@ -16,9 +16,12 @@
|
|||||||
|
|
||||||
package android.widget;
|
package android.widget;
|
||||||
|
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.ActivityInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.database.DataSetObservable;
|
import android.database.DataSetObservable;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
@@ -708,7 +711,12 @@ public class ActivityChooserModel extends DataSetObservable {
|
|||||||
final int resolveInfoCount = resolveInfos.size();
|
final int resolveInfoCount = resolveInfos.size();
|
||||||
for (int i = 0; i < resolveInfoCount; i++) {
|
for (int i = 0; i < resolveInfoCount; i++) {
|
||||||
ResolveInfo resolveInfo = resolveInfos.get(i);
|
ResolveInfo resolveInfo = resolveInfos.get(i);
|
||||||
mActivities.add(new ActivityResolveInfo(resolveInfo));
|
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 true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package android.widget;
|
|||||||
|
|
||||||
import com.android.internal.R;
|
import com.android.internal.R;
|
||||||
|
|
||||||
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
@@ -27,6 +28,7 @@ import android.content.res.TypedArray;
|
|||||||
import android.database.DataSetObserver;
|
import android.database.DataSetObserver;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.ActionProvider;
|
import android.view.ActionProvider;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
@@ -63,6 +65,8 @@ import android.widget.ListPopupWindow.ForwardingListener;
|
|||||||
*/
|
*/
|
||||||
public class ActivityChooserView extends ViewGroup implements ActivityChooserModelClient {
|
public class ActivityChooserView extends ViewGroup implements ActivityChooserModelClient {
|
||||||
|
|
||||||
|
private static final String LOG_TAG = "ActivityChooserView";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An adapter for displaying the activities in an {@link AdapterView}.
|
* An adapter for displaying the activities in an {@link AdapterView}.
|
||||||
*/
|
*/
|
||||||
@@ -543,9 +547,9 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
}
|
}
|
||||||
// Activity chooser content.
|
// Activity chooser content.
|
||||||
if (mDefaultActivityButton.getVisibility() == VISIBLE) {
|
if (mDefaultActivityButton.getVisibility() == VISIBLE) {
|
||||||
mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground);
|
mActivityChooserContent.setBackground(mActivityChooserContentBackground);
|
||||||
} else {
|
} else {
|
||||||
mActivityChooserContent.setBackgroundDrawable(null);
|
mActivityChooserContent.setBackground(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -577,7 +581,8 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
Intent launchIntent = mAdapter.getDataModel().chooseActivity(position);
|
Intent launchIntent = mAdapter.getDataModel().chooseActivity(position);
|
||||||
if (launchIntent != null) {
|
if (launchIntent != null) {
|
||||||
launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
|
launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
|
||||||
mContext.startActivity(launchIntent);
|
ResolveInfo resolveInfo = mAdapter.getDataModel().getActivity(position);
|
||||||
|
startActivity(launchIntent, resolveInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@@ -595,7 +600,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
Intent launchIntent = mAdapter.getDataModel().chooseActivity(index);
|
Intent launchIntent = mAdapter.getDataModel().chooseActivity(index);
|
||||||
if (launchIntent != null) {
|
if (launchIntent != null) {
|
||||||
launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
|
launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
|
||||||
mContext.startActivity(launchIntent);
|
startActivity(launchIntent, defaultActivity);
|
||||||
}
|
}
|
||||||
} else if (view == mExpandActivityOverflowButton) {
|
} else if (view == mExpandActivityOverflowButton) {
|
||||||
mIsSelectingDefaultActivity = false;
|
mIsSelectingDefaultActivity = false;
|
||||||
@@ -632,6 +637,18 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
mOnDismissListener.onDismiss();
|
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();
|
return mDataModel.getHistorySize();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxActivityCount() {
|
|
||||||
return mMaxActivityCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActivityChooserModel getDataModel() {
|
public ActivityChooserModel getDataModel() {
|
||||||
return mDataModel;
|
return mDataModel;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3901,6 +3901,9 @@
|
|||||||
<!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] -->
|
<!-- 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>
|
<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 -->
|
<!-- ShareActionProvider - accessibility support -->
|
||||||
<!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
|
<!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
|
||||||
<string name="shareactionprovider_share_with">Share with</string>
|
<string name="shareactionprovider_share_with">Share with</string>
|
||||||
|
|||||||
@@ -392,6 +392,7 @@
|
|||||||
<java-symbol type="string" name="accessibility_enabled" />
|
<java-symbol type="string" name="accessibility_enabled" />
|
||||||
<java-symbol type="string" name="activity_chooser_view_see_all" />
|
<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" />
|
||||||
|
<java-symbol type="string" name="activitychooserview_choose_application_error" />
|
||||||
<java-symbol type="string" name="alternate_eri_file" />
|
<java-symbol type="string" name="alternate_eri_file" />
|
||||||
<java-symbol type="string" name="alwaysUse" />
|
<java-symbol type="string" name="alwaysUse" />
|
||||||
<java-symbol type="string" name="autofill_address_line_1_label_re" />
|
<java-symbol type="string" name="autofill_address_line_1_label_re" />
|
||||||
|
|||||||
Reference in New Issue
Block a user