New activity for handling dialogs of remote bugreports

Presents dialogs when commanded by DPM.

Bug: 26226230
Change-Id: Ia3301592f767ac95f1c073e9401718d717f50c83
This commit is contained in:
Michal Karpinski
2016-02-25 17:29:43 +00:00
parent c96fac5cf4
commit 707f42f01d
3 changed files with 134 additions and 0 deletions

View File

@@ -1968,6 +1968,17 @@
android:theme="@android:style/Theme.Material.Light.Dialog.NoActionBar"> android:theme="@android:style/Theme.Material.Light.Dialog.NoActionBar">
</activity> </activity>
<activity android:name=".RemoteBugreportActivity"
android:excludeFromRecents="true"
android:exported="true"
android:permission="android.permission.DUMP"
android:theme="@android:style/Theme.Material.Light.Dialog.NoActionBar">
<intent-filter>
<action android:name="android.settings.SHOW_REMOTE_BUGREPORT_DIALOG" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".bluetooth.RequestPermissionHelperActivity" <activity android:name=".bluetooth.RequestPermissionHelperActivity"
android:label="@string/bluetooth_pairing_request" android:label="@string/bluetooth_pairing_request"
android:excludeFromRecents="true" android:excludeFromRecents="true"

View File

@@ -6679,6 +6679,19 @@
<!-- Description of how many more permissions to view on next page [CHAR LIMIT=30] --> <!-- Description of how many more permissions to view on next page [CHAR LIMIT=30] -->
<string name="additional_permissions_more"><xliff:g id="count" example="2">%1$d</xliff:g> more</string> <string name="additional_permissions_more"><xliff:g id="count" example="2">%1$d</xliff:g> more</string>
<!-- Title of dialog shown to ask for user consent for sharing a bugreport that was requested remotely by the IT administrator. -->
<string name="share_remote_bugreport_dialog_title">Share bug report?</string>
<!-- Message of a dialog shown to ask for user consent for sharing a bugreport that was requested remotely by the IT administrator. -->
<string name="share_remote_bugreport_dialog_message_finished">Your IT admin requested a bug report to help troubleshoot this device. Apps and data may be shared.</string>
<!-- Message of a dialog shown to ask for user consent for sharing a bugreport that was requested remotely by the IT administrator and it's still being taken. -->
<string name="share_remote_bugreport_dialog_message">Your IT admin requested a bug report to help troubleshoot this device. Apps and data may be shared, and your device may temporarily slow down.</string>
<!-- Message of a dialog shown to inform that the remote bugreport that was requested remotely by the IT administrator is still being taken and will be shared when finished. -->
<string name="sharing_remote_bugreport_dialog_message">This bug report is being shared with your IT admin. Contact them for more details.</string>
<!-- Acceptance label of dialog shown to ask for user consent for sharing the remote bugreport. -->
<string name="share_remote_bugreport_action">Share</string>
<!-- Decline label of dialog shown to ask for user consent for sharing the remote bugreport. -->
<string name="decline_remote_bugreport_action">Decline</string>
<!-- Title of one of the choices in a dialog (with title defined in usb_use) that lets the user <!-- Title of one of the choices in a dialog (with title defined in usb_use) that lets the user
select what the USB connection for this device should be used for. This choice select what the USB connection for this device should be used for. This choice
is for charging only. --> is for charging only. -->

View File

@@ -0,0 +1,110 @@
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings;
import android.annotation.Nullable;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.admin.DevicePolicyManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
import android.util.Log;
import android.widget.LinearLayout;
import com.android.settings.R;
/**
* UI for the remote bugreport dialog. Shows one of 3 possible dialogs:
* <ul>
* <li>bugreport is still being taken and can be shared or declined</li>
* <li>bugreport has been taken and can be shared or declined</li>
* <li>bugreport has already been accepted to be shared, but is still being taken</li>
* </ul>
*/
public class RemoteBugreportActivity extends Activity {
private static final String TAG = "RemoteBugreportActivity";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final int notificationType = getIntent().getIntExtra(
DevicePolicyManager.EXTRA_BUGREPORT_NOTIFICATION_TYPE, -1);
if (notificationType == DevicePolicyManager.NOTIFICATION_BUGREPORT_ACCEPTED_NOT_FINISHED) {
AlertDialog dialog = new AlertDialog.Builder(this)
.setMessage(R.string.sharing_remote_bugreport_dialog_message)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
})
.setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.create();
dialog.show();
} else if (notificationType == DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED
|| notificationType
== DevicePolicyManager.NOTIFICATION_BUGREPORT_FINISHED_NOT_ACCEPTED) {
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle(R.string.share_remote_bugreport_dialog_title)
.setMessage(notificationType
== DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED
? R.string.share_remote_bugreport_dialog_message
: R.string.share_remote_bugreport_dialog_message_finished)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
})
.setNegativeButton(R.string.decline_remote_bugreport_action,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(
DevicePolicyManager.ACTION_BUGREPORT_SHARING_DECLINED);
RemoteBugreportActivity.this.sendBroadcastAsUser(intent,
UserHandle.SYSTEM, android.Manifest.permission.DUMP);
finish();
}
})
.setPositiveButton(R.string.share_remote_bugreport_action,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(
DevicePolicyManager.ACTION_BUGREPORT_SHARING_ACCEPTED);
RemoteBugreportActivity.this.sendBroadcastAsUser(intent,
UserHandle.SYSTEM, android.Manifest.permission.DUMP);
finish();
}
})
.create();
dialog.show();
} else {
Log.e(TAG, "Incorrect dialog type, no dialog shown. Received: " + notificationType);
}
}
}