Android: java.lang.SecurityException - despite having declared <uses-permission> -


i'm getting securityexception's in app, presumably due missing permissions. happens , doesn't seem consistent, kind of 'once in blue moon' thing. haven't got access of devices it's crashed on. seems happen across different manufacturer, , android versions.

what i've done far, check androidmanifest.xml <uses-permission> , it's in right scope, immediate child of <mainfest> , seems fine. below androidmanifest.xml - shortened bit readability. , i've tried google it, , i've found similare issue on google groups, seems unsolved: https://groups.google.com/forum/#!topic/android-c2dm/qijbqo38rhi

<manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.etilbudsavis.etilbudsavis" >      <!-- permissions e.t.c. removed readability -->     <uses-permission android:name="android.permission.internet" />      <!-- permission's causes crashes -->     <uses-permission android:name="com.google.android.c2dm.permission.receive" />     <uses-permission android:name="android.permission.access_network_state" />     <uses-permission android:name="android.permission.write_external_storage" />      <permission         android:name="${applicationid}.permission.c2d_message"         android:protectionlevel="signature" />      <uses-permission android:name="${applicationid}.permission.c2d_message" />      <application         android:name="com.etilbudsavis.etilbudsavis.app"         android:allowbackup="true"         android:icon="@drawable/ic_app"         android:label="@string/app_name" >          <activity             android:name="com.etilbudsavis.etilbudsavis.mainactivity"             android:configchanges="orientation|keyboard|keyboardhidden|screensize"             android:label="@string/app_name"             android:launchmode="singletop" >             <intent-filter>                 <action android:name="android.intent.action.main" />                 <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>          <activity             android:name="com.etilbudsavis.etilbudsavis.test.testactivity" >         </activity>          <!-- activities, services, recievers removed readability -->      </application>  </manifest> 

i've included couple of stack traces, have out crash reporter along device info.

the first missing com.google.android.c2dm.permission.receive in manifest. devices: sony xperia z1 compact (d5503, running android 5.0.2) , samsung galaxy s iii (i9300, running android 4.3).

java.lang.securityexception: not allowed start service intent { act=com.google.android.c2dm.intent.register pkg=com.google.android.gms (has extras) } without permission com.google.android.c2dm.permission.receive        @ android.app.contextimpl.startservicecommon(contextimpl.java:1730)        @ android.app.contextimpl.startservice(contextimpl.java:1707)        @ android.content.contextwrapper.startservice(contextwrapper.java:515)        @ com.google.android.gms.gcm.googlecloudmessaging.zzs()        @ com.google.android.gms.gcm.googlecloudmessaging.register()        @ com.etilbudsavis.etilbudsavis.notification.gcmregistration.run(gcmregistration.java:42)        @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112)        @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587)        @ java.lang.thread.run(thread.java:818) 

second 1 missing android.permission.access_network_state, defined in mainfest. devices: huawei ascend p7 (p7-l10, running android 4.4.2)

java.lang.securityexception: connectivityservice: neither user 10184 nor current process has android.permission.access_network_state.        @ android.os.parcel.readexception(parcel.java:1475)        @ android.os.parcel.readexception(parcel.java:1429)        @ android.net.iconnectivitymanager$stub$proxy.getactivenetworkinfo(iconnectivitymanager.java:843)        @ android.net.connectivitymanager.getactivenetworkinfo(connectivitymanager.java:635)        @ com.etilbudsavis.etilbudsavis.connectionchecker.isonline(connectionchecker.java:67)        @ com.etilbudsavis.etilbudsavis.connectionchecker.run(connectionchecker.java:42) 

third 1 second 1 missing android.permission.write_external_storage, defined in mainfest. devices: samsung galaxy tab s 8.4 (sm-t705, running android 4.4.2)

java.lang.securityexception: maps api requires additional following permissions set in androidmanifest.xml ensure correct behavior: <uses-permission android:name="android.permission.write_external_storage"/>        @ com.google.maps.api.android.lib6.d.t.a()        @ com.google.maps.api.android.lib6.d.ft.a()        @ com.google.maps.api.android.lib6.d.aj.a()        @ com.google.maps.api.android.lib6.d.ai.a()        @ com.google.android.gms.maps.internal.x.ontransact(sourcefile:107)        @ android.os.binder.transact(binder.java:361)        @ com.google.android.gms.maps.internal.imapfragmentdelegate$zza$zza.oncreateview()        @ com.google.android.gms.maps.supportmapfragment$zza.oncreateview()        @ com.google.android.gms.dynamic.zza$4.zzb()        @ com.google.android.gms.dynamic.zza.zza()        @ com.google.android.gms.dynamic.zza.oncreateview()        @ com.google.android.gms.maps.supportmapfragment.oncreateview()        @ android.support.v4.app.fragment.performcreateview(fragment.java:1789)        @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:955)        @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1138)        @ android.support.v4.app.backstackrecord.run(backstackrecord.java:740)        @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1501)        @ android.support.v4.app.fragmentmanagerimpl.executependingtransactions(fragmentmanager.java:490)        @ com.etilbudsavis.etilbudsavis.fragment.locationmapfragment.ensuresupportmapfragment(locationmapfragment.java:338)        @ com.etilbudsavis.etilbudsavis.fragment.locationmapfragment.onstart(locationmapfragment.java:676)        @ android.support.v4.app.fragment.performstart(fragment.java:1813)        @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:989)        @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1138)        @ android.support.v4.app.backstackrecord.run(backstackrecord.java:740)        @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1501)        @ android.support.v4.app.fragmentmanagerimpl$1.run(fragmentmanager.java:458)        @ android.os.handler.handlecallback(handler.java:733)        @ android.os.handler.dispatchmessage(handler.java:95)        @ android.os.looper.loop(looper.java:146)        @ android.app.activitythread.main(activitythread.java:5653)        @ java.lang.reflect.method.invokenative(method.java)        @ java.lang.reflect.method.invoke(method.java:515)        @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1291)        @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1107)        @ dalvik.system.nativestart.main(nativestart.java) 

any appreciated.


Comments