Merge "Fixing user tap on suspended widget" into pi-dev
am: 98deba8412
Change-Id: I689e4e488ec573050c18420c50595cc0d9472178
This commit is contained in:
@@ -16,10 +16,12 @@
|
||||
|
||||
package com.android.internal.app;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Slog;
|
||||
@@ -30,35 +32,47 @@ import com.android.internal.R;
|
||||
public class SuspendedAppActivity extends AlertActivity
|
||||
implements DialogInterface.OnClickListener {
|
||||
private static final String TAG = "SuspendedAppActivity";
|
||||
|
||||
public static final String EXTRA_SUSPENDED_PACKAGE =
|
||||
"SuspendedAppActivity.extra.SUSPENDED_PACKAGE";
|
||||
public static final String EXTRA_SUSPENDING_PACKAGE =
|
||||
"SuspendedAppActivity.extra.SUSPENDING_PACKAGE";
|
||||
public static final String EXTRA_DIALOG_MESSAGE = "SuspendedAppActivity.extra.DIALOG_MESSAGE";
|
||||
public static final String EXTRA_MORE_DETAILS_INTENT =
|
||||
"SuspendedAppActivity.extra.MORE_DETAILS_INTENT";
|
||||
|
||||
private Intent mMoreDetailsIntent;
|
||||
private int mUserId;
|
||||
private PackageManager mPm;
|
||||
|
||||
private CharSequence getAppLabel(String packageName) {
|
||||
final PackageManager pm = getPackageManager();
|
||||
try {
|
||||
return pm.getApplicationInfoAsUser(packageName, 0, mUserId).loadLabel(pm);
|
||||
return mPm.getApplicationInfoAsUser(packageName, 0, mUserId).loadLabel(mPm);
|
||||
} catch (PackageManager.NameNotFoundException ne) {
|
||||
Slog.e(TAG, "Package " + packageName + " not found", ne);
|
||||
}
|
||||
return packageName;
|
||||
}
|
||||
|
||||
private Intent getMoreDetailsActivity(String suspendingPackage, String suspendedPackage,
|
||||
int userId) {
|
||||
final Intent moreDetailsIntent = new Intent(Intent.ACTION_SHOW_SUSPENDED_APP_DETAILS)
|
||||
.setPackage(suspendingPackage);
|
||||
final String requiredPermission = Manifest.permission.SEND_SHOW_SUSPENDED_APP_DETAILS;
|
||||
final ResolveInfo resolvedInfo = mPm.resolveActivityAsUser(moreDetailsIntent, 0, userId);
|
||||
if (resolvedInfo != null && resolvedInfo.activityInfo != null
|
||||
&& requiredPermission.equals(resolvedInfo.activityInfo.permission)) {
|
||||
moreDetailsIntent.putExtra(Intent.EXTRA_PACKAGE_NAME, suspendedPackage)
|
||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
return moreDetailsIntent;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
|
||||
super.onCreate(icicle);
|
||||
mPm = getPackageManager();
|
||||
getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
|
||||
|
||||
final Intent intent = getIntent();
|
||||
mMoreDetailsIntent = intent.getParcelableExtra(EXTRA_MORE_DETAILS_INTENT);
|
||||
mUserId = intent.getIntExtra(Intent.EXTRA_USER_ID, -1);
|
||||
if (mUserId < 0) {
|
||||
Slog.wtf(TAG, "Invalid user: " + mUserId);
|
||||
@@ -66,13 +80,13 @@ public class SuspendedAppActivity extends AlertActivity
|
||||
return;
|
||||
}
|
||||
final String suppliedMessage = intent.getStringExtra(EXTRA_DIALOG_MESSAGE);
|
||||
final CharSequence suspendedAppLabel = getAppLabel(
|
||||
intent.getStringExtra(EXTRA_SUSPENDED_PACKAGE));
|
||||
final String suspendedPackage = intent.getStringExtra(EXTRA_SUSPENDED_PACKAGE);
|
||||
final String suspendingPackage = intent.getStringExtra(EXTRA_SUSPENDING_PACKAGE);
|
||||
final CharSequence suspendedAppLabel = getAppLabel(suspendedPackage);
|
||||
final CharSequence dialogMessage;
|
||||
if (suppliedMessage == null) {
|
||||
dialogMessage = getString(R.string.app_suspended_default_message,
|
||||
suspendedAppLabel,
|
||||
getAppLabel(intent.getStringExtra(EXTRA_SUSPENDING_PACKAGE)));
|
||||
dialogMessage = getString(R.string.app_suspended_default_message, suspendedAppLabel,
|
||||
getAppLabel(suspendingPackage));
|
||||
} else {
|
||||
dialogMessage = String.format(getResources().getConfiguration().getLocales().get(0),
|
||||
suppliedMessage, suspendedAppLabel);
|
||||
@@ -82,6 +96,7 @@ public class SuspendedAppActivity extends AlertActivity
|
||||
ap.mTitle = getString(R.string.app_suspended_title);
|
||||
ap.mMessage = dialogMessage;
|
||||
ap.mPositiveButtonText = getString(android.R.string.ok);
|
||||
mMoreDetailsIntent = getMoreDetailsActivity(suspendingPackage, suspendedPackage, mUserId);
|
||||
if (mMoreDetailsIntent != null) {
|
||||
ap.mNeutralButtonText = getString(R.string.app_suspended_more_details);
|
||||
}
|
||||
@@ -99,4 +114,16 @@ public class SuspendedAppActivity extends AlertActivity
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
||||
public static Intent createSuspendedAppInterceptIntent(String suspendedPackage,
|
||||
String suspendingPackage, String dialogMessage, int userId) {
|
||||
return new Intent()
|
||||
.setClassName("android", SuspendedAppActivity.class.getName())
|
||||
.putExtra(EXTRA_SUSPENDED_PACKAGE, suspendedPackage)
|
||||
.putExtra(EXTRA_DIALOG_MESSAGE, dialogMessage)
|
||||
.putExtra(EXTRA_SUSPENDING_PACKAGE, suspendingPackage)
|
||||
.putExtra(Intent.EXTRA_USER_ID, userId)
|
||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user