Merge "use GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS for provider acess"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index cafdf25..bd76af1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -32,6 +32,7 @@
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.BROADCAST_SMS" />
+ <uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS" />
<uses-sdk android:minSdkVersion="29"/>
diff --git a/AndroidManifest_Platform.xml b/AndroidManifest_Platform.xml
index 4ff8ed5..067741f 100644
--- a/AndroidManifest_Platform.xml
+++ b/AndroidManifest_Platform.xml
@@ -30,6 +30,7 @@
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.BROADCAST_SMS" />
+ <uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS" />
<uses-sdk android:minSdkVersion="29"/>
diff --git a/src/com/android/cellbroadcastservice/CellBroadcastProvider.java b/src/com/android/cellbroadcastservice/CellBroadcastProvider.java
index 1369b52..f7dea4e 100644
--- a/src/com/android/cellbroadcastservice/CellBroadcastProvider.java
+++ b/src/com/android/cellbroadcastservice/CellBroadcastProvider.java
@@ -390,18 +390,26 @@
private class CellBroadcastPermissionChecker implements PermissionChecker {
@Override
public boolean hasWritePermission() {
- // Only the phone and network statck process has the write permission to modify this
- // provider.
- return Binder.getCallingUid() == Process.PHONE_UID
- || Binder.getCallingUid() == Process.NETWORK_STACK_UID;
+ // Only the telephony system compontents e.g, Cellbroadcast service has the write
+ // permission to modify this provider.
+ int status = getContext().checkCallingOrSelfPermission(
+ "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS");
+ if (status == PackageManager.PERMISSION_GRANTED) {
+ return true;
+ }
+ return false;
}
@Override
public boolean hasReadPermission() {
- // Only the phone and network stack process has the read permission to query data from
- // this provider.
- return Binder.getCallingUid() == Process.PHONE_UID
- || Binder.getCallingUid() == Process.NETWORK_STACK_UID;
+ // Only the telephony system compontents e.g, Cellbroadcast service has the read
+ // permission to access this provider.
+ int status = getContext().checkCallingOrSelfPermission(
+ "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS");
+ if (status == PackageManager.PERMISSION_GRANTED) {
+ return true;
+ }
+ return false;
}
@Override