0

I'm using google play services r14 and couldn't able to run the app on any device.

01-23 12:07:37.309: E/AndroidRuntime(7056): FATAL EXCEPTION: main
01-23 12:07:37.309: E/AndroidRuntime(7056): java.lang.RuntimeException: Unable to start     activity ComponentInfo{com.example.mapstest/com.example.mapstest.MainActivity}: java.lang.NullPointerException
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.app.ActivityThread.access$700(ActivityThread.java:143)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.os.Looper.loop(Looper.java:137)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.app.ActivityThread.main(ActivityThread.java:4963)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at java.lang.reflect.Method.invokeNative(Native Method)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at java.lang.reflect.Method.invoke(Method.java:511)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at dalvik.system.NativeStart.main(Native Method)
01-23 12:07:37.309: E/AndroidRuntime(7056): Caused by: java.lang.NullPointerException
01-23 12:07:37.309: E/AndroidRuntime(7056):     at com.example.mapstest.MainActivity.onCreate(MainActivity.java:25)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.app.Activity.performCreate(Activity.java:5184)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
01-23 12:07:37.309: E/AndroidRuntime(7056):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
01-23 12:07:37.309: E/AndroidRuntime(7056):     ... 11 more

My Mainfest.xml code:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapstest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="18" />    
 <permission
    android:name="com.example.mapstest.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"></permission>
<uses-permission
    android:name="com.example.mapstest.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.WRITE_EXTERNAL_STORAGE"/>
<uses-permission
    android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission
    android:name="android.permission.ACCESS_FINE_LOCATION"/>

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:debuggable="true" >
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="api_key"/>
    <meta-data android:name="com.google.android.gms.version"
       android:value="4132500" />
    <activity
        android:name="com.example.mapstest.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

MainActivity.java :

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import android.os.Bundle; 
import android.app.Activity; 
import android.support.v4.app.FragmentActivity;
import android.view.Menu;

public class MainActivity extends FragmentActivity {

private static GoogleMap mMap; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);            
    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();       
    mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);         
    final LatLng CIU = new LatLng(35.21843892856462, 33.41662287712097);         
    Marker ciu = mMap.addMarker(new MarkerOptions()                                   
    .position(CIU).title("My Office"));     
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

activity_main.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
xmlns:tools="http://schemas.android.com/tools"    
android:layout_width="match_parent"    
android:layout_height="match_parent"    
android:paddingBottom="@dimen/activity_vertical_margin"    
android:paddingLeft="@dimen/activity_horizontal_margin"    
android:paddingRight="@dimen/activity_horizontal_margin"    
android:paddingTop="@dimen/activity_vertical_margin"    
tools:context=".MainActivity" >
<TextView        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:text="@string/hello_world" />
<fragment
    android:id="@+id/map"     
    android:layout_width="match_parent"        
    android:layout_height="match_parent"        
class="com.google.android.gms.maps.MapFragment"/>
</RelativeLayout>

Done all settings for google play services. Does these error occurs because of google play service version? If this is the reason, how to change google play service revision 14 to 10? Any Solutions?

Priyanka
  • 325
  • 1
  • 3
  • 12

2 Answers2

0

Your mMap is null. Try to use SupportMapFragment in layout and use getSupportFragmentManager() in code, like this:

    <fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="com.google.android.gms.maps.SupportMapFragment"/>

and this code:

    mMap = ((SupportMapFragment)getSupportFragmentManager()
    .findFragmentById(R.id.map)).getMap();
Dimmerg
  • 2,113
  • 1
  • 13
  • 14
  • Thanks, updated that info - was still getting the error - it turns out to be that am referring to Google Play services r14 - trying to download r10 or r12 – Priyanka Jan 23 '14 at 07:47
  • it starts to work after changing google play service from r14 to r10 and restarting device also. – Priyanka Jan 23 '14 at 10:53
  • It's absolutely strange. Does it means that google play service r14 have some problems? What do you think? – Dimmerg Jan 23 '14 at 11:05
  • i don't think so... i referred [http://stackoverflow.com/questions/20019118/google-map-api-v2-and-older-version-of-google-play-services-lib](http://stackoverflow.com/questions/20019118/google-map-api-v2-and-older-version-of-google-play-services-lib) – Priyanka Jan 23 '14 at 11:14
0

In your Android Manifest you have not specified

<uses-library
    android:name="com.google.android.maps" />

use android:name instead of android:class.Thus change the fragment in your layout as below

<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>

and use this in your java file to define mMap

 mMap = ((SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
Lal
  • 14,726
  • 4
  • 45
  • 70