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

Я создал собственное расширение для Android push-уведомлений, но когда я запускаю приложение, я получаю исключение, например:

Отказ в разрешении: получение намерения {act=com.google.android.c2dm.intent.REGISTRATION cat=[air.com.test.mobile] (имеет дополнительные функции)} для air.com.test.mobile.debug требует air.com. test.mobile.permission.C2D_MESSAGE из-за отправителя com.google.android.gsf (uid 10019)

Манифест:

<android>
        <colorDepth>16bit</colorDepth>
        <manifestAdditions><![CDATA[
   <manifest android:installLocation="auto">

       <uses-permission android:name="android.permission.INTERNET"/>       
       <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
       <uses-permission android:name="android.permission.WAKE_LOCK"/>
       <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>       
       <uses-permission android:name="android.permission.VIBRATE" />
       <uses-permission android:name="android.permission.GET_ACCOUNTS" />

       <permission android:name="air.com.test.mobile.permission.C2D_MESSAGE" android:protectionLevel="signature" />
       <uses-permission android:name="air.com.test.mobile.permission.C2D_MESSAGE" />

       <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

       <application android:enabled="true" android:hardwareAccelerated="false">

        <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" 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="air.com.test.mobile"/>
           </intent-filter>
      </receiver>
      <service android:name="com.adobe.sampleasextension.GCMIntentService" />
     <activity android:excludeFromRecents="false">
      <intent-filter>
       <action android:name="android.intent.action.MAIN"/>
       <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
     </activity>
    </application>
   </manifest>

  ]]></manifestAdditions>
    </android>

person Vamshi    schedule 24.04.2014    source источник


Ответы (2)


Что ж, не видя вашего манифеста и основываясь на полученной вами ошибке, я предлагаю вам добавить в свой манифест следующее:

<permission android:protectionLevel="signature"
    android:name="air.com.test.mobile.permission.C2D_MESSAGE" />
<uses-permission android:name="air.com.test.mobile.permission.C2D_MESSAGE" />

РЕДАКТИРОВАТЬ:

Я заметил, что в ошибке также упоминается air.com.test.mobile.debug. Какой из них является основным пакетом вашего приложения? Возможно, вам следует изменить все соответствующие места в вашем манифесте, которые имеют air.com.test.mobile на air.com.test.mobile.debug.

person Eran    schedule 24.04.2014
comment
На самом деле я искал в своем проекте, я не нашел air.com.test.mobile.debug, но почему этот пакет отображается в исключении... - person Vamshi; 24.04.2014

Добавьте это в свой файл AndroidManifest с родственным тегом и дочерним элементом тега.

<permission
        android:name="air.com.test.mobile.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="air.com.test.mobile.permission.C2D_MESSAGE" />

Сначала вы должны создать разрешение с именем вашего пакета для push-уведомлений, а затем определить это разрешение для своего приложения, как показано выше.

person Kapil Vij    schedule 24.04.2014