6

I'm not able to show the google map on Android M.

Here is layout xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:wheel="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<include
    layout="@layout/toolbar_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

<LinearLayout
    android:orientation="vertical"
    android:id="@+id/content_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        class="com.google.android.gms.maps.SupportMapFragment"
        android:id="@+id/googleMap"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"

        />
       </LinearLayout>

 </LinearLayout>

AndroidManifest File:

<permission
    android:name="com.xxx.yyy.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.xxx.yyy.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

And inside application tag:

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/maps_api_key" />

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

I'm requesting for permissions at runtime:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED || checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED))
            {
                requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION);
            }

And this is the callback:

@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
    switch (requestCode) {
        case PERMISSION_REQUEST_COARSE_LOCATION: {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED  && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
                //Access Location
            } else {
                Utils.showToast(getApplicationContext(), "Until you grant the permissions, You cannot Access Location Service");
            }

        }
        break;
    }
}

I'm getting this exception

"android.view.InflateException: Binary XML file line #: Error inflating class fragment" only on Android 6.

It is showing map without any issue on rest of the versions of android. Please help me.

Anu
  • 165
  • 10

2 Answers2

1

I can't find any strange in the xml. However, inflation error may not happen only on this layout. For example, this layout xml include toolbar_layout, maybe the error is in toolbar_layout.xml.

I'll suggest that, maybe you can mark out some tags and try again and find out find tag cause this exception.

Xanadu Wang
  • 161
  • 1
  • 7
  • It is showing the line number of fragment tag in the error message. And If something is wrong in toolbar layout then it should show same error message on other versions also. But I'm getting this only on android M. – Anu Dec 28 '15 at 08:27
1

Do you have SD card on Android-M device? If no, insert SD card and try again.

Santhosh
  • 4,956
  • 12
  • 62
  • 90
  • If your code is fine but can't get the map then You should insert sdcard and try loading the map on Android-M. – Santhosh May 12 '16 at 10:15