Merge "Fix projection permission dialog layering" into lmp-mr1-dev
This commit is contained in:
@@ -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" />
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user