причина за отказ на разрешение: получаване на намерение

Успешно накарах тези реализации на c2dm да работят в моето приложение.

Имам проблем, когато c2dm съобщенията не се получават внезапно от устройството. Този път ми дава отказ за разрешение, за което съм объркан:

Отказ на разрешение: получаване на намерение {
act=com.google.android.c2dm.intent.REGISTRATION cat=[myapp.android] (има екстри) } към myapp.android изисква myapp.android.permission.C2D_MESSAGE поради com на подателя .google.android.location (uid 10037)

Случи ми се за втори път сега, не мога просто да кажа на потребителите си, че трябва да извършат фабрично нулиране, когато не са получили никаква команда. Някой тук срещал ли е подобен проблем? Всяка помощ или прозрения и каузи ще бъдат много оценени.

manifest.xml, както е поискано


   <receiver
        android:name="myapp.EmBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

            <category android:name="myapp" />
        </intent-filter>
    </receiver>

...

<uses-permission android:name="myapp.android.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.INTERNET" />


person user1908805    schedule 17.12.2012    source източник


Отговори (3)


За мен проработи, след като го дефинирах по следния начин:

<permission android:name="mypkg.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="mypkg.permission.C2D_MESSAGE"/>

където mypkg = е пакетът на моето приложение

person AAP    schedule 26.08.2013

Също така трябва да дефинирате разрешението във вашия манифест по този начин, защото то не е системно, а е специфично за вашето приложение:

<permission android:name="myapp.android.gms.permission.C2D_MESSAGE" />

В случай, че вече имате, това вероятно е грешка в конкретно устройство или по-стара версия на свързани библиотеки на Google и т.н. Не можете да направите много в този случай.

person Nikolay Elenkov    schedule 17.12.2012
comment
Здравей Еленков. Не го определям, опитайте. Ако не го дефинирам, изведнъж не мога да получа известие? Освен това не използвам gsm мрежа... Благодаря ви за помощта - person user1908805; 17.12.2012
comment
Работи ли, когато го дефинирате правилно? Не съм сигурен как е свързана GSM мрежата... Проблемът възниква ли на определени устройства и/или версии на Android? - person Nikolay Elenkov; 17.12.2012
comment
Опитайте сега. Когато се дефинира, програмата работи нормално. Този проблем се е появявал само веднъж, версията на Android и устройството не са известни само един. - person user1908805; 17.12.2012
comment
уау, при моя се получи. Както се посочва в коментара, това вероятно е грешка в няколко конкретни устройства. ! - person ericlee; 10.06.2014

Сблъсквал съм се със същия проблем, дори когато имах разрешението, дефинирано в моя манифест.

Изглежда, че има нещо общо с protectionLevel="signature" и дефиницията на разрешението, което се поврежда, когато приложението се инсталира отново с производствени срещу ключове за отстраняване на грешки.

Това, което го поправи за мен, беше временно задаване на protectionLevel="normal", след това преинсталиране на приложението, след което промяна обратно на "подпис" и преинсталиране отново.

person Karsten    schedule 09.05.2013