java - Android Studio setmylocationenabled(true) throws SecurityException -
i've encountered problem. program throes securityexception, if declraed permissions. here mapsactivity class:
public class mapsactivity extends fragmentactivity implements onmapreadycallback { private googlemap mmap; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_maps); // obtain supportmapfragment , notified when map ready used. supportmapfragment mapfragment = (supportmapfragment) getsupportfragmentmanager() .findfragmentbyid(r.id.map); mapfragment.getmapasync(this);} public void onmapready(googlemap googlemap) { try{ mmap = googlemap; // add marker in sydney , move camera latlng sydney = new latlng(-34, 151); mmap.addmarker(new markeroptions().position(sydney).title("marker in sydney")); mmap.movecamera(cameraupdatefactory.newlatlng(sydney)); mmap.setmylocationenabled(true); mmap.getuisettings().setmylocationbuttonenabled(true); // set map type } here manifest:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="mazebug.danuleoshaleosha"> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.write_external_storage" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-permission android:name="com.google.android.providers.gsf.permission.read_gservices" /> <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" /> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsrtl="true" 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=".interface" /> <activity android:name=".main2activity" /> <activity android:name=".main22activity" /> <activity android:name=".sfr_table" /> <activity android:name=".sfrtable2" /> <activity android:name=".sfrtable3" /> <activity android:name=".sfrtable4" /> <activity android:name=".sfrtable5" /> <activity android:name=".sfrtable6" /> <activity android:name=".sfrtable7" /> <activity android:name=".mysfrs" /> <activity android:name=".search_bysitename" /> <activity android:name=".search_bydate" /> <activity android:name=".search_bylocation" /> <activity android:name=".found_1" /> <activity android:name=".found_2" /> <activity android:name=".found_3" /> <activity android:name=".edit_first" /> <activity android:name=".edit_1_2" /> <activity android:name=".edit_1_3" /> <activity android:name=".edit_1_4" /> <activity android:name=".edit_1_5" /> <activity android:name=".edit_1_6" /> <activity android:name=".edit_1_7" /> <activity android:name=".testing" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <activity android:name=".main23activity" /> <!-- api key google maps-based apis defined string resource. (see file "res/values/google_maps_api.xml"). note api key linked encryption key used sign apk. need different api key each encryption key, including release key used sign apk publishing. can define keys debug , release targets in src/debug/ , src/release/. --> <meta-data android:name="com.google.android.geo.api_key" android:value="aizasya-z6nm3woxwp7dbzidz1_dssl8x81xttg" /> <activity android:name=".mapsactivity" android:label="@string/title_activity_maps"></activity> </application> here thrown exception
fatal exception: main process: mazebug.danuleoshaleosha, pid: 13162 java.lang.securityexception: location requires permission access_fine_location or access_coarse_location @ com.google.maps.api.android.lib6.e.ev.c(unknown source) @ com.google.android.gms.maps.internal.j.ontransact(sourcefile:274) @ android.os.binder.transact(binder.java:387) @ com.google.android.gms.maps.internal.igooglemapdelegate$zza$zza.setmylocationenabled(unknown source) @ com.google.android.gms.maps.googlemap.setmylocationenabled(unknown source) @ mazebug.danuleoshaleosha.mapsactivity.onmapready(mapsactivity.java:51) @ com.google.android.gms.maps.supportmapfragment$zza$1.zza(unknown source) @ com.google.android.gms.maps.internal.zzo$zza.ontransact(unknown source) @ android.os.binder.transact(binder.java:387) @ com.google.android.gms.maps.internal.be.a(sourcefile:82) @ com.google.maps.api.android.lib6.e.fb.run(unknown source) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5417) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) i'm pretty confused, 'cause seems granted required permissions. please give me piece of advice. thanks!
try change code.
// add marker in sydney , move camera latlng sydney = new latlng(-34, 151); mmap.addmarker(new markeroptions().position(sydney).title("marker in sydney")); mmap.movecamera(cameraupdatefactory.newlatlng(sydney)); if (activitycompat.checkselfpermission(this, android.manifest.permission.access_fine_location) != packagemanager.permission_granted && activitycompat.checkselfpermission(this, android.manifest.permission.access_coarse_location) != packagemanager.permission_granted) return; mmap.setmylocationenabled(true); mmap.getuisettings().setmylocationbuttonenabled(true);
Comments
Post a Comment