Overview Actions - shows a message if action is blocked by policy.

Device policy or app secure surface policy mean that snapshot based
actions shouldn't work.
This is encoded in whether the snapshot is "real", the fake snapshot is
generated when policy doesn't allow captures.

Test: tested with Test DPC fake device policy app
Change-Id: Ib34e5a90ab58fb401d4516c531866d1c13569256
This commit is contained in:
Zak Cohen 2020-05-08 17:16:15 -07:00
parent 9506316e21
commit 4ebd859bc4
2 changed files with 23 additions and 3 deletions

View File

@ -22,6 +22,7 @@ import android.content.Context;
import android.graphics.Insets; import android.graphics.Insets;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.Rect; import android.graphics.Rect;
import android.widget.Toast;
import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseActivity;
import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.BaseDraggingActivity;
@ -109,16 +110,26 @@ public class TaskOverlayFactory implements ResourceBasedOverride {
public void initOverlay(Task task, ThumbnailData thumbnail, Matrix matrix) { public void initOverlay(Task task, ThumbnailData thumbnail, Matrix matrix) {
ImageActionsApi imageApi = new ImageActionsApi( ImageActionsApi imageApi = new ImageActionsApi(
mApplicationContext, mThumbnailView::getThumbnail); mApplicationContext, mThumbnailView::getThumbnail);
final boolean isAllowedByPolicy = thumbnail.isRealSnapshot;
getActionsView().setCallbacks(new OverlayUICallbacks() { getActionsView().setCallbacks(new OverlayUICallbacks() {
@Override @Override
public void onShare() { public void onShare() {
if (isAllowedByPolicy) {
imageApi.startShareActivity(); imageApi.startShareActivity();
} else {
showBlockedByPolicyMessage();
}
} }
@Override @Override
public void onScreenshot() { public void onScreenshot() {
if (isAllowedByPolicy) {
imageApi.saveScreenshot(mThumbnailView.getThumbnail(), imageApi.saveScreenshot(mThumbnailView.getThumbnail(),
getTaskSnapshotBounds(), getTaskSnapshotInsets(), task.key.id); getTaskSnapshotBounds(), getTaskSnapshotInsets(), task.key.id);
} else {
showBlockedByPolicyMessage();
}
} }
}); });
} }
@ -152,6 +163,13 @@ public class TaskOverlayFactory implements ResourceBasedOverride {
// TODO: return the real insets // TODO: return the real insets
return Insets.of(0, 0, 0, 0); return Insets.of(0, 0, 0, 0);
} }
private void showBlockedByPolicyMessage() {
Toast.makeText(
mThumbnailView.getContext(),
R.string.blocked_by_policy,
Toast.LENGTH_LONG).show();
}
} }
/** /**

View File

@ -141,4 +141,6 @@
<string name="action_share">Share</string> <string name="action_share">Share</string>
<!-- Label for a button that causes a screen shot of the current app to be taken. [CHAR_LIMIT=40] --> <!-- Label for a button that causes a screen shot of the current app to be taken. [CHAR_LIMIT=40] -->
<string name="action_screenshot">Screenshot</string> <string name="action_screenshot">Screenshot</string>
<!-- Message shown when an action is blocked by a policy enforced by the app or the organization managing the device. [CHAR_LIMIT=NONE] -->
<string name="blocked_by_policy">This action isn\'t allowed by the app or your organization</string>
</resources> </resources>