diff --git a/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java b/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java index 6d64ec89..1884bcce 100644 --- a/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java +++ b/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java @@ -23,6 +23,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.content.pm.PermissionInfo; import android.content.pm.ResolveInfo; import android.net.ConnectivityManager; import android.os.Build; @@ -468,6 +469,15 @@ public class McsService extends Service implements Handler.Callback { intent.putExtra(appData.key, appData.value); } + String receiverPermission; + try { + String name = msg.category + ".permission.C2D_MESSAGE"; + getPackageManager().getPermissionInfo(name, 0); + receiverPermission = name; + } catch (PackageManager.NameNotFoundException e) { + receiverPermission = null; + } + List infos = getPackageManager().queryBroadcastReceivers(intent, PackageManager.GET_RESOLVED_FILTER); if (infos == null || infos.isEmpty()) { logd("No target for message, wut?"); @@ -476,7 +486,7 @@ public class McsService extends Service implements Handler.Callback { logd("Target: " + resolveInfo); Intent targetIntent = new Intent(intent); targetIntent.setComponent(new ComponentName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name)); - sendOrderedBroadcast(targetIntent, msg.category + ".permission.C2D_MESSAGE"); + sendOrderedBroadcast(targetIntent, receiverPermission); } } }