summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Monk <jmonk@google.com>2015-08-07 18:40:32 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-08-07 18:40:32 +0000
commit0c5d3ddf25ca46bf610608f2db8ae8f7371ba318 (patch)
treef6965edcf171365ef0d9f0831119a07dff4fb26c
parent51fc8c6e93aaa6e5c33a65a82a7c2dfd8de75caa (diff)
parent5c07dcb0698725e7949b030665d21f96c916f3b8 (diff)
downloadandroid_packages_apps_PackageInstaller-0c5d3ddf25ca46bf610608f2db8ae8f7371ba318.tar.gz
android_packages_apps_PackageInstaller-0c5d3ddf25ca46bf610608f2db8ae8f7371ba318.tar.bz2
android_packages_apps_PackageInstaller-0c5d3ddf25ca46bf610608f2db8ae8f7371ba318.zip
Merge "Show warning when touches are being blocked by overlays" into mnc-dev
-rw-r--r--AndroidManifest.xml4
-rw-r--r--res/layout/grant_permissions.xml1
-rw-r--r--res/layout/header.xml2
-rw-r--r--res/layout/permissions_frame.xml3
-rwxr-xr-xres/values/styles.xml2
-rw-r--r--res/values/themes.xml4
-rw-r--r--src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java6
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java8
-rw-r--r--src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java3
-rw-r--r--src/com/android/packageinstaller/permission/ui/OverlayTouchActivity.java39
-rw-r--r--src/com/android/packageinstaller/permission/ui/OverlayWarningDialog.java62
-rw-r--r--src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java7
12 files changed, 130 insertions, 11 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 072a1222..9120e7ec 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -89,6 +89,10 @@
</intent-filter>
</activity>
+ <activity android:name=".permission.ui.OverlayWarningDialog"
+ android:excludeFromRecents="true"
+ android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar" />
+
<receiver android:name=".permission.model.PermissionStatusReceiver"
android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS">
<intent-filter>
diff --git a/res/layout/grant_permissions.xml b/res/layout/grant_permissions.xml
index 87b51d2b..b3565240 100644
--- a/res/layout/grant_permissions.xml
+++ b/res/layout/grant_permissions.xml
@@ -26,7 +26,6 @@
android:paddingBottom="8dip"
android:paddingStart="22dip"
android:paddingEnd="16dip"
- android:filterTouchesWhenObscured="true"
android:orientation="vertical">
<FrameLayout
diff --git a/res/layout/header.xml b/res/layout/header.xml
index f9b27af6..0e000a4d 100644
--- a/res/layout/header.xml
+++ b/res/layout/header.xml
@@ -35,7 +35,7 @@
android:layout_marginStart="@dimen/header_subsettings_margin_start"
android:layout_alignWithParentIfMissing="true"
android:layout_centerVertical="true"
- android:textAppearance="@android:style/TextAppearance.Material.Medium"
+ android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white"
android:textAlignment="viewStart" />
diff --git a/res/layout/permissions_frame.xml b/res/layout/permissions_frame.xml
index 5e0d9ec1..8f1f2789 100644
--- a/res/layout/permissions_frame.xml
+++ b/res/layout/permissions_frame.xml
@@ -22,8 +22,7 @@
<FrameLayout
android:id="@+id/prefs_container"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:filterTouchesWhenObscured="true">
+ android:layout_height="match_parent">
<TextView
android:id="@+id/no_permissions"
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 6d772910..9c166971 100755
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -24,7 +24,7 @@
<item name="android:backgroundDimEnabled">true</item>
</style>
- <style name="Theme.Header.Settings" parent="@android:style/Theme.Material.Settings">
+ <style name="Theme.Header.Settings" parent="@android:style/Theme.DeviceDefault.Settings">
</style>
<style name="PreferenceThemeOverlay.v14.Permissions">
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 3f8f59d9..2f9c2b55 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -16,11 +16,11 @@
-->
<resources>
- <style name="Settings" parent="@android:style/Theme.Material.Settings">
+ <style name="Settings" parent="@android:style/Theme.DeviceDefault.Settings">
<item name="android:actionBarStyle">@style/ActionBar</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Permissions</item>
</style>
<style name="GrantPermissions"
- parent="@android:style/Theme.Material.Light.Dialog.NoActionBar" />
+ parent="@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar" />
</resources>
diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
index d78883a4..e4e904c8 100644
--- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
@@ -268,6 +268,12 @@ public final class AppPermissionsFragment extends SettingsWithHeader
return false;
}
+ OverlayTouchActivity activity = (OverlayTouchActivity) getActivity();
+ if (activity.isObscuredTouch()) {
+ activity.showOverlayDialog();
+ return false;
+ }
+
addToggledGroup(group);
if (LocationUtils.isLocked(group.getName(), group.getApp().packageName)) {
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index 4755e9bf..c451dd50 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -19,7 +19,6 @@ package com.android.packageinstaller.permission.ui;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.Intent;
import android.content.pm.PackageInfo;
@@ -50,7 +49,7 @@ import com.android.packageinstaller.permission.utils.Utils;
import java.util.ArrayList;
import java.util.List;
-public class GrantPermissionsActivity extends Activity
+public class GrantPermissionsActivity extends OverlayTouchActivity
implements GrantPermissionsViewHandler.ResultListener {
private static final String LOG_TAG = "GrantPermissionsActivity";
@@ -219,6 +218,11 @@ public class GrantPermissionsActivity extends Activity
@Override
public void onPermissionGrantResult(String name, boolean granted, boolean doNotAskAgain) {
+ if (isObscuredTouch()) {
+ showOverlayDialog();
+ finish();
+ return;
+ }
GroupState groupState = mRequestGrantPermissionGroups.get(name);
if (groupState.mGroup != null) {
if (granted) {
diff --git a/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
index bf0ebf3a..8ba6b127 100644
--- a/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java
@@ -16,13 +16,12 @@
package com.android.packageinstaller.permission.ui;
-import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
-public final class ManagePermissionsActivity extends Activity {
+public final class ManagePermissionsActivity extends OverlayTouchActivity {
private static final String LOG_TAG = "ManagePermissionsActivity";
@Override
diff --git a/src/com/android/packageinstaller/permission/ui/OverlayTouchActivity.java b/src/com/android/packageinstaller/permission/ui/OverlayTouchActivity.java
new file mode 100644
index 00000000..e4cbff3a
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/OverlayTouchActivity.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 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.packageinstaller.permission.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.view.MotionEvent;
+
+public class OverlayTouchActivity extends Activity {
+
+ private boolean mObscuredTouch;
+
+ public boolean isObscuredTouch() {
+ return mObscuredTouch;
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent event) {
+ mObscuredTouch = (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0;
+ return super.dispatchTouchEvent(event);
+ }
+
+ public void showOverlayDialog() {
+ startActivity(new Intent(this, OverlayWarningDialog.class));
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/OverlayWarningDialog.java b/src/com/android/packageinstaller/permission/ui/OverlayWarningDialog.java
new file mode 100644
index 00000000..a7c1e2a1
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/OverlayWarningDialog.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2015 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.packageinstaller.permission.ui;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ActivityNotFoundException;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.Intent;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.util.Log;
+
+import com.android.packageinstaller.R;
+
+public class OverlayWarningDialog extends Activity implements OnClickListener, OnDismissListener {
+
+ private static final String TAG = "OverlayWarningDialog";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ new AlertDialog.Builder(this)
+ .setTitle(R.string.screen_overlay_title)
+ .setMessage(R.string.screen_overlay_message)
+ .setPositiveButton(R.string.screen_overlay_button, this)
+ .setOnDismissListener(this)
+ .show();
+ }
+
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ finish();
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ finish();
+ try {
+ startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION));
+ } catch (ActivityNotFoundException e) {
+ Log.w(TAG, "No manage overlay settings", e);
+ }
+ }
+
+}
diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java
index a1ef3ca3..2a5f7c7e 100644
--- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java
@@ -307,6 +307,13 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
if (app == null) {
return false;
}
+
+ OverlayTouchActivity activity = (OverlayTouchActivity) getActivity();
+ if (activity.isObscuredTouch()) {
+ activity.showOverlayDialog();
+ return false;
+ }
+
addToggledGroup(app.getPackageName(), app.getPermissionGroup());
if (LocationUtils.isLocked(mPermissionApps.getGroupName(), app.getPackageName())) {