am c2fa99ed: am 792a9cc3: am 30fd0628: Merge "Relax auto-launch checks for GET_CONTENT." into mnc-dr-dev

* commit 'c2fa99edf1591eca47ad678889cfd4924f2470a8':
  Relax auto-launch checks for GET_CONTENT.
This commit is contained in:
Jeff Sharkey
2015-09-30 20:27:36 +00:00
committed by Android Git Automerger
3 changed files with 31 additions and 11 deletions

View File

@@ -130,6 +130,9 @@ public final class DocumentsContract {
*/ */
private static final int THUMBNAIL_BUFFER_SIZE = (int) (128 * KB_IN_BYTES); private static final int THUMBNAIL_BUFFER_SIZE = (int) (128 * KB_IN_BYTES);
/** {@hide} */
public static final String PACKAGE_DOCUMENTS_UI = "com.android.documentsui";
/** /**
* Constants related to a document, including {@link Cursor} column names * Constants related to a document, including {@link Cursor} column names
* and flags. * and flags.

View File

@@ -40,6 +40,7 @@ import android.os.RemoteException;
import android.os.ResultReceiver; import android.os.ResultReceiver;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.DocumentsContract;
import android.service.chooser.ChooserTarget; import android.service.chooser.ChooserTarget;
import android.service.chooser.ChooserTargetService; import android.service.chooser.ChooserTargetService;
import android.service.chooser.IChooserTargetResult; import android.service.chooser.IChooserTargetResult;
@@ -269,7 +270,20 @@ public class ChooserActivity extends ResolverActivity {
} }
@Override @Override
boolean shouldAutoLaunchSingleChoice() { boolean shouldAutoLaunchSingleChoice(TargetInfo target) {
final Intent intent = target.getResolvedIntent();
final ResolveInfo resolve = target.getResolveInfo();
// When GET_CONTENT is handled by the DocumentsUI system component,
// we're okay automatically launching it, since it offers it's own
// intent disambiguation UI.
if (intent != null && Intent.ACTION_GET_CONTENT.equals(intent.getAction())
&& resolve != null && resolve.priority > 0
&& resolve.activityInfo != null && DocumentsContract.PACKAGE_DOCUMENTS_UI
.equals(resolve.activityInfo.packageName)) {
return true;
}
return false; return false;
} }

View File

@@ -796,7 +796,7 @@ public class ResolverActivity extends Activity {
return false; return false;
} }
boolean shouldAutoLaunchSingleChoice() { boolean shouldAutoLaunchSingleChoice(TargetInfo target) {
return true; return true;
} }
@@ -837,18 +837,21 @@ public class ResolverActivity extends Activity {
mAlwaysUseOption = alwaysUseOption; mAlwaysUseOption = alwaysUseOption;
int count = mAdapter.getUnfilteredCount(); int count = mAdapter.getUnfilteredCount();
if ((!shouldAutoLaunchSingleChoice() && count > 0) if (count == 1 && mAdapter.getOtherProfile() == null) {
|| count > 1 // Only one target, so we're a candidate to auto-launch!
|| (count == 1 && mAdapter.getOtherProfile() != null)) { final TargetInfo target = mAdapter.targetInfoForPosition(0, false);
if (shouldAutoLaunchSingleChoice(target)) {
safelyStartActivity(target);
mPackageMonitor.unregister();
mRegistered = false;
finish();
return true;
}
}
if (count > 0) {
setContentView(layoutId); setContentView(layoutId);
mAdapterView = (AbsListView) findViewById(R.id.resolver_list); mAdapterView = (AbsListView) findViewById(R.id.resolver_list);
onPrepareAdapterView(mAdapterView, mAdapter, alwaysUseOption); onPrepareAdapterView(mAdapterView, mAdapter, alwaysUseOption);
} else if (count == 1) {
safelyStartActivity(mAdapter.targetInfoForPosition(0, false));
mPackageMonitor.unregister();
mRegistered = false;
finish();
return true;
} else { } else {
setContentView(R.layout.resolver_list); setContentView(R.layout.resolver_list);