summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Quattlebaum <rquattle@google.com>2017-08-03 14:44:39 -0700
committerRobert Quattlebaum <rquattle@google.com>2017-08-08 16:37:30 -0700
commitc90f0063b4c9959c22f6fce8006c8214e7e25c46 (patch)
treecd07b2322ca69c3828a5719a2076b18118e77584
parent67a620c6f11669ba8509eccec6ebff301f1fc985 (diff)
downloadlowpan-c90f0063b4c9959c22f6fce8006c8214e7e25c46.tar.gz
Added support for Android Things permissions.
Change-Id: Ib2a01c7e1a633950b6e263b4aa19afc6d367b220
-rw-r--r--service/java/com/android/server/lowpan/LowpanServiceImpl.java28
1 files changed, 23 insertions, 5 deletions
diff --git a/service/java/com/android/server/lowpan/LowpanServiceImpl.java b/service/java/com/android/server/lowpan/LowpanServiceImpl.java
index 07677e3..967dc79 100644
--- a/service/java/com/android/server/lowpan/LowpanServiceImpl.java
+++ b/service/java/com/android/server/lowpan/LowpanServiceImpl.java
@@ -16,6 +16,7 @@
package com.android.server.lowpan;
+import android.content.pm.PackageManager;
import android.content.Context;
import android.net.lowpan.ILowpanInterface;
import android.net.lowpan.ILowpanManager;
@@ -46,9 +47,11 @@ public class LowpanServiceImpl extends ILowpanManager.Stub {
private final Context mContext;
private final HandlerThread mHandlerThread = new HandlerThread("LowpanServiceThread");
private final AtomicBoolean mStarted = new AtomicBoolean(false);
+ private final boolean mIsAndroidThings;
public LowpanServiceImpl(Context context) {
mContext = context;
+ mIsAndroidThings = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_EMBEDDED);
}
public Looper getLooper() {
@@ -74,14 +77,29 @@ public class LowpanServiceImpl extends ILowpanManager.Stub {
}
private void enforceAccessPermission() {
- mContext.enforceCallingOrSelfPermission(
- android.Manifest.permission.ACCESS_LOWPAN_STATE, "LowpanService");
+ try {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.ACCESS_LOWPAN_STATE, "LowpanService");
+ } catch (SecurityException x) {
+ if (!mIsAndroidThings) {
+ throw x;
+ }
+ mContext.enforceCallingOrSelfPermission(
+ "com.google.android.things.permission.ACCESS_LOWPAN_STATE", "LowpanService");
+ }
}
private void enforceManagePermission() {
- // TODO: Change to android.Manifest.permission.MANAGE_lowpanInterfaceS
- mContext.enforceCallingOrSelfPermission(
- android.Manifest.permission.CHANGE_LOWPAN_STATE, "LowpanService");
+ try {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.MANAGE_LOWPAN_INTERFACES, "LowpanService");
+ } catch (SecurityException x) {
+ if (!mIsAndroidThings) {
+ throw x;
+ }
+ mContext.enforceCallingOrSelfPermission(
+ "com.google.android.things.permission.MANAGE_LOWPAN_INTERFACES", "LowpanService");
+ }
}
public ILowpanInterface getInterface(String name) {