diff options
author | Robert Quattlebaum <rquattle@google.com> | 2017-08-03 14:44:39 -0700 |
---|---|---|
committer | Robert Quattlebaum <rquattle@google.com> | 2017-08-08 16:37:30 -0700 |
commit | c90f0063b4c9959c22f6fce8006c8214e7e25c46 (patch) | |
tree | cd07b2322ca69c3828a5719a2076b18118e77584 | |
parent | 67a620c6f11669ba8509eccec6ebff301f1fc985 (diff) | |
download | lowpan-c90f0063b4c9959c22f6fce8006c8214e7e25c46.tar.gz |
Added support for Android Things permissions.
Change-Id: Ib2a01c7e1a633950b6e263b4aa19afc6d367b220
-rw-r--r-- | service/java/com/android/server/lowpan/LowpanServiceImpl.java | 28 |
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) { |