am 17e0a7e7: am 09eeab7c: Merge "Fix projection permission dialog layering" into lmp-mr1-dev

* commit '17e0a7e7ac289deacff01c84591dae4009f86415':
  Fix projection permission dialog layering
This commit is contained in:
Adrian Roos
2014-12-01 19:33:21 +00:00
committed by Android Git Automerger
3 changed files with 44 additions and 18 deletions

View File

@@ -266,7 +266,7 @@
<activity <activity
android:name=".media.MediaProjectionPermissionActivity" android:name=".media.MediaProjectionPermissionActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.SystemUI.Dialog.Alert" android:theme="@style/Theme.AlertDialogHost"
android:finishOnCloseSystemDialogs="true" android:finishOnCloseSystemDialogs="true"
android:launchMode="singleTop" android:launchMode="singleTop"
android:excludeFromRecents="true" /> android:excludeFromRecents="true" />

View File

@@ -262,4 +262,14 @@
<style name="UserDetailView"> <style name="UserDetailView">
<item name="numColumns">3</item> <item name="numColumns">3</item>
</style> </style>
<style name="Theme.AlertDialogHost" parent="android:Theme.DeviceDefault">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:alertDialogTheme">@style/Theme.SystemUI.Dialog.Alert</item>
</style>
</resources> </resources>

View File

@@ -16,6 +16,7 @@
package com.android.systemui.media; package com.android.systemui.media;
import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
@@ -32,6 +33,7 @@ import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.WindowManager;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.TextView; import android.widget.TextView;
@@ -39,9 +41,11 @@ import android.widget.TextView;
import com.android.internal.app.AlertActivity; import com.android.internal.app.AlertActivity;
import com.android.internal.app.AlertController; import com.android.internal.app.AlertController;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.statusbar.phone.SystemUIDialog;
public class MediaProjectionPermissionActivity extends AlertActivity public class MediaProjectionPermissionActivity extends Activity
implements DialogInterface.OnClickListener, CheckBox.OnCheckedChangeListener { implements DialogInterface.OnClickListener, CheckBox.OnCheckedChangeListener,
DialogInterface.OnCancelListener {
private static final String TAG = "MediaProjectionPermissionActivity"; private static final String TAG = "MediaProjectionPermissionActivity";
private boolean mPermanentGrant; private boolean mPermanentGrant;
@@ -49,11 +53,12 @@ public class MediaProjectionPermissionActivity extends AlertActivity
private int mUid; private int mUid;
private IMediaProjectionManager mService; private IMediaProjectionManager mService;
private AlertDialog mDialog;
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
Intent intent = getIntent();
mPackageName = getCallingPackage(); mPackageName = getCallingPackage();
IBinder b = ServiceManager.getService(MEDIA_PROJECTION_SERVICE); IBinder b = ServiceManager.getService(MEDIA_PROJECTION_SERVICE);
mService = IMediaProjectionManager.Stub.asInterface(b); mService = IMediaProjectionManager.Stub.asInterface(b);
@@ -89,22 +94,27 @@ public class MediaProjectionPermissionActivity extends AlertActivity
String appName = aInfo.loadLabel(packageManager).toString(); String appName = aInfo.loadLabel(packageManager).toString();
final AlertController.AlertParams ap = mAlertParams; mDialog = new AlertDialog.Builder(this)
ap.mIcon = aInfo.loadIcon(packageManager); .setIcon(aInfo.loadIcon(packageManager))
ap.mMessage = getString(R.string.media_projection_dialog_text, appName); .setMessage(getString(R.string.media_projection_dialog_text, appName))
ap.mPositiveButtonText = getString(R.string.media_projection_action_text); .setPositiveButton(R.string.media_projection_action_text, this)
ap.mNegativeButtonText = getString(android.R.string.cancel); .setNegativeButton(android.R.string.cancel, this)
ap.mPositiveButtonListener = this; .setView(R.layout.remember_permission_checkbox)
ap.mNegativeButtonListener = this; .setOnCancelListener(this)
.create();
// add "always use" checkbox mDialog.create();
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ap.mView = inflater.inflate(R.layout.remember_permission_checkbox, null);
CheckBox rememberPermissionCheckbox =
(CheckBox)ap.mView.findViewById(R.id.remember);
rememberPermissionCheckbox.setOnCheckedChangeListener(this);
setupAlert(); ((CheckBox) mDialog.findViewById(R.id.remember)).setOnCheckedChangeListener(this);
mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
mDialog.show();
}
@Override
protected void onDestroy() {
super.onDestroy();
mDialog.dismiss();
} }
@Override @Override
@@ -118,6 +128,7 @@ public class MediaProjectionPermissionActivity extends AlertActivity
Log.e(TAG, "Error granting projection permission", e); Log.e(TAG, "Error granting projection permission", e);
setResult(RESULT_CANCELED); setResult(RESULT_CANCELED);
} finally { } finally {
mDialog.dismiss();
finish(); finish();
} }
} }
@@ -135,4 +146,9 @@ public class MediaProjectionPermissionActivity extends AlertActivity
intent.putExtra(MediaProjectionManager.EXTRA_MEDIA_PROJECTION, projection.asBinder()); intent.putExtra(MediaProjectionManager.EXTRA_MEDIA_PROJECTION, projection.asBinder());
return intent; return intent;
} }
@Override
public void onCancel(DialogInterface dialog) {
finish();
}
} }