0

Everytime I've tried to test my app on my phone, It shows a prompt that says "Unfortunately, the app has stopped."

I have already checked the build path, I've made sure that Google play services library is added. I've tried searching several threads already on how to fix and none of them are working. So I've made this post as a last resort to get someone to check it manually.

Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="info.androidhive.googlemapsv2"
    android:versionCode="1"
    android:versionName="1.0" >

    <permission
        android:name="info.androidhive.googlemapsv2.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="info.androidhive.googlemapsv2.permission.MAPS_RECEIVE" />

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Required to show current location -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!-- Required OpenGL ES 2.0. for Maps V2 -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        >
        <uses-library android:name="com.google.android.maps"/>
        <activity
            android:name="info.androidhive.googlemapsv2.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppBaseTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <!-- Goolge API Key -->
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="My KEY" />
    </application>

</manifest>

Activity main.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

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

Main activity.java:

package info.androidhive.info;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;

import info.androidhive.googlemapsv2.R;




import android.os.Bundle;
import android.support.v4.app.FragmentActivity;


public class MainActivity extends FragmentActivity {

    private SupportMapFragment mapFragment;
    private GoogleMap googleMap;

    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.activity_main);

        /*A noter que dans le cas où nous sommes sur un device< 3.0 nous devrions utiliser les librairies de compatibilités (FragmentActivity, SupportMapfragment).*/
        mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        googleMap = mapFragment.getMap();
        googleMap.setMyLocationEnabled(true);

    }



}

LogCat:

10-31 18:26:51.220: E/AndroidRuntime(869): FATAL EXCEPTION: main
10-31 18:26:51.220: E/AndroidRuntime(869): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{info.androidhive.googlemapsv2/info.androidhive.googlemapsv2.MainActivity}: java.lang.ClassNotFoundException: info.androidhive.googlemapsv2.MainActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/info.androidhive.googlemapsv2-2.apk]
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2703)
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797)
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.app.ActivityThread.access$2300(ActivityThread.java:135)
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132)
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.os.Looper.loop(Looper.java:143)
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.app.ActivityThread.main(ActivityThread.java:4914)
10-31 18:26:51.220: E/AndroidRuntime(869):  at java.lang.reflect.Method.invokeNative(Native Method)
10-31 18:26:51.220: E/AndroidRuntime(869):  at java.lang.reflect.Method.invoke(Method.java:521)
10-31 18:26:51.220: E/AndroidRuntime(869):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
10-31 18:26:51.220: E/AndroidRuntime(869):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
10-31 18:26:51.220: E/AndroidRuntime(869):  at dalvik.system.NativeStart.main(Native Method)
10-31 18:26:51.220: E/AndroidRuntime(869): Caused by: java.lang.ClassNotFoundException: info.androidhive.googlemapsv2.MainActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/info.androidhive.googlemapsv2-2.apk]
10-31 18:26:51.220: E/AndroidRuntime(869):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
10-31 18:26:51.220: E/AndroidRuntime(869):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
10-31 18:26:51.220: E/AndroidRuntime(869):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.app.Instrumentation.newActivity(Instrumentation.java:1033)
10-31 18:26:51.220: E/AndroidRuntime(869):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2695)
10-31 18:26:51.220: E/AndroidRuntime(869):  ... 11 more
Guest Guest
  • 411
  • 1
  • 6
  • 9

3 Answers3

0

You refer to your activity in manifest as

 <activity
        android:name="info.androidhive.googlemapsv2.MainActivity"
        android:label="@string/app_name"

whereas your Activity is in package

package info.androidhive.info;

so change the above manifest code as

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="info.androidhive.info"
    android:versionCode="1"
    android:versionName="1.0" >

    <permission
        android:name="info.androidhive.info.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission  android:name="info.androidhive.info.permission.MAPS_RECEIVE" />

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Required to show current location -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!-- Required OpenGL ES 2.0. for Maps V2 -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        >
        <uses-library android:name="com.google.android.maps"/>
        <activity
            android:name="info.androidhive.info.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppBaseTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <!-- Goolge API Key -->
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="My KEY" />
    </application>

</manifest>

Or you may simply refractor your package name to:

info.androidhive.googlemapsv2;

and also change its declaration in your Activity to:

package info.androidhive.googlemapsv2;
Rachit Mishra
  • 6,101
  • 4
  • 30
  • 51
0

Try to add this portion of code immediately after setContentView():

int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (result!=ConnectionResult.SUCCESS) {
    GooglePlayServicesUtil.getErrorDialog(result, this, 23);
    this.finish();
}

in such a way to verify that you have no problem with GooglePlayServices. Now change your code in onCreate() with this:

MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
GoogleMap googleMap = fragment.getMap();

Your manifest seems right!

Emisilve86
  • 354
  • 2
  • 8
0

Hello I got same error in past.

Please Modify your code

mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    googleMap = mapFragment.getMap();

to

 if (googleMap == null) {
                googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                        R.id.map)).getMap();

                // check if map is created successfully or not
                if (googleMap == null) {
                    Toast.makeText(getApplicationContext(),
                            "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                            .show();
                }
            }

and also add in manifest googleplayservice version

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

And also check your package name. i hope this will help you.

hardramoliya
  • 163
  • 1
  • 2
  • 13