#android #google-cloud-messaging
#Android #google-облако-обмен сообщениями
Вопрос:
что это :
Невозможно получить главный токен java.lang.SecurityException: не разрешено запускать намерение службы { act=com.google.android.c2dm.intent.ЗАРЕГИСТРИРОВАТЬ pkg=com.google.android.gms (имеет дополнительные возможности) } без разрешения com.google.android.c2dm.permission.ПОЛУЧИТЬ в android.app.ContextImpl.startService(ContextImpl.java: 1161) в android.content.ContextWrapper.startService(ContextWrapper.java: 383) на com.google.firebase.iid.zzf.zzb (неизвестный источник) на com.google.firebase.iid.zzf.zza (неизвестный источник) на com.google.firebase.iid.zzf.zzb (неизвестный источник) на com.Google.firebase.iid.zzf.zza (неизвестный источник) на com.google.firebase.iid.zzd.zzc (неизвестный источник) на com.google.firebase.iid.zzd.getToken (неизвестный источник) на com.google.firebase.iid.FirebaseInstanceId.getToken (неизвестный источник) на com.google.firebase.iid.FirebaseInstanceId.D (Неизвестный источник) на com.google.firebase.iid.FirebaseInstanceIdService.zza (неизвестный источник) на com.google.firebase.iid.FirebaseInstanceIdService.zzm (неизвестный источник) на com.Google.firebase.iid.zzb $ 2.выполнить (неизвестный источник) на java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1076) в java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:569) на java.lang.Thread.run(Thread.java: 856)
мой файл манифеста :
<uses-permission android:name="android.permission.INTERNET" />
<!-- [START gcm_permission] -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- [END gcm_permission] -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".Main2Activity">
</activity>
<!-- Firebase Notifications -->
<service
android:name="com.badboys.gcm.service.MyFirebaseMessagingService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name="com.badboys.gcm.service.MyFirebaseInstanceIDService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<!-- ./Firebase Notifications -->
</application>
Ответ №1:
Добавить
разрешение android: name=».permission.C2D_MESSAGE» android: ProtectionLevel=»подпись» />
Ответ №2:
Проверьте Настройку клиента GCM для Android, если вы что-то пропустили.
Из того, что я прочитал, вам не хватает 1-го разрешения, которое не позволяет другим приложениям регистрировать / получать ваши сообщения.
"packagename" ".permission.C2D_MESSAGE"
Вам также не хватает нескольких элементов, которые могут вызвать проблему.
Теперь, если вам нужна реализация, зависящая от Firebase, измените действие фильтра намерений MyFirebaseMessagingService
на
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
и MyFirebaseInstanceService
для
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>