I'm writing android app with Android Build Target API 24 (OS 7). I have to prompt permission of ACCESS_COARSE_LOCATION for API 23 & above versions. So I change my Android.Manifest like below.
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="24" />
After that My app only show white screen and nothing happen. I'm using with Eclipse IDE. But when I change the targetSdkVersion to 22 then the app working fine in other process but doesn't show the Permission Prompt for ACCESS_COARSE_LOCATION and the location process cannot use and the below error show in LogCat.
Permission denial: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan results
How should I do that? Please help me. Do I need to change targetSdkVersion to 24?
Updated
Here is my Manifest.xml Full Code.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company_name.apps.my_app_name"
android:versionCode="16"
android:versionName="2.1.1" android:installLocation="internalOnly">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="24" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- end GCM permission -->
<!-- map -->
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!-- External storage for caching. -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Here is my Access Permission Code.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
Log.d("PermissionGAndroid6", "MarshMallow OS6");
if (this.checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Log.d("PermissionG1","Permission Granted Prompt");
requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION);
}
}
else {
setContentView(R.layout.activity_main);
Exchanger.start(this, APPLICATION_CODE, ORIENTATION, TEST_MODE);
// default first fragment is MainFragment
if (findViewById(R.id.container) != null) {
mMainFragment = new MainFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.container, mMainFragment, "MainFragment").commit();
}
LogTracker.getTracker().startUsingApp();
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[],
int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_COARSE_LOCATION: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d("PermissionG", "coarse location permission granted");
setContentView(R.layout.activity_main);
Exchanger.start(this, APPLICATION_CODE, ORIENTATION, TEST_MODE);
// default first fragment is MainFragment
if (findViewById(R.id.container) != null) {
mMainFragment = new MainFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.container, mMainFragment, "MainFragment").commit();
}
LogTracker.getTracker().startUsingApp();
} else {
requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION);
}
return;
}
}
}