I am using Eclipse helios and Android 4.1.2
i have followed the following documentation https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw and done the coding exactly as described in tutorial.when i run my app on emulator it shows "This app wont run unless you update google play services" but on real device which is sony xperia which has google play services updated version it crahses with "App has stopped working".Any help is appreciated.

This is my manifest

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


        <uses-sdk
            android:minSdkVersion="11"
            android:targetSdkVersion="16" />

          <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_CORSE_LOCATION" />

        <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
         <permission
             android:name="com.example.emeterfinalapp.permission.MAPS_RECEIVE"
             android:protectionLevel="signature"/>
    <uses-permission  android:name="com.example.emeterfinalapp.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>


        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >

             <uses-library android:name="com.google.android.maps"/>
            <activity
                android:name="com.example.emeterfinalapp.EmeterMainActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:label="@string/app_name"
                android:theme="@style/FullscreenTheme" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name="com.example.emeterfinalapp.EnterLocationActivity"
                android:label="@string/title_activity_enter_location"
                android:parentActivityName="com.example.emeterfinalapp.EmeterMainActivity" >
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.example.emeterfinalapp.EmeterMainActivity" />
            </activity>

            <activity
                android:name="com.example.emeterfinalapp.SelectLocation"
                android:label="@string/title_activity_select_location"
                android:parentActivityName="com.example.emeterfinalapp.EnterMainActivity" >
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.example.emeterfinalapp.EnterMainActivity" />


             </activity>
            </application>
     <meta-data
       android:name="com.google.android.maps.v2.API_KEY"
       android:value="my api key"/>
        </manifest>

here is my 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"
        tools:context=".SelectLocation" >

        <Button
            android:id="@+id/satellite_button"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/mapview_button"
            android:text="@string/satellitebuttontext" />


            <fragment xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/map"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             class="com.google.android.gms.maps.SupportMapFragment"
             android:layout_below="@+id/satellite_button"/>


            <LinearLayout android:id="@+id/zoom" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_alignParentBottom="true" 
            android:layout_centerHorizontal="true" 
            />

            <Button
                android:id="@+id/mapview_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:text="@string/mapbuttontext" />

    </RelativeLayout>

here is my activity

ackage com.example.emeterfinalapp;

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

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

            public class SelectLocation extends FragmentActivity  {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_select_location);
            // Show the Up button in the action bar.
            getActionBar().setDisplayHomeAsUpEnabled(true);
                                               GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());

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

        }


    }

I gave reference of google_play_services lib to my project added google_play_service and android.support.v4 jar files in my lib....Please if i m still missing anythng please guide....

Recommended Answers

All 10 Replies

"App has stopped working"

That message is what Androd OS throws at user so he knows something went wrong instead of application disapearing without any apparent reason. You should as developer know there is logcat that gives actual reason with details of what happend.

Here is the logcat which i got from my phone

 I/ActivityManager(  282): Displayed com.example.emeterfinalapp/.EmeterMainActivity:                +206ms
     I/ActivityManager(  282): Displayed com.example.emeterfinalapp/.EnterLocationActivity:      +224ms
     W/InputDispatcher(  282): channel '2c3dbfd0      com.example.emeterfinalapp/com.example.emeterfinalapp.EmeterMainActivity (server)' ~           Consumer closed input channel or an error occurred.  events=0x8
     E/InputDispatcher(  282): channel '2c3dbfd0      com.example.emeterfinalapp/com.example.emeterfinalapp.EmeterMainActivity (server)' ~      Channel is unrecoverably broken and will be disposed!
     W/InputDispatcher(  282): Attempted to unregister already unregistered input channel      '2c3dbfd0 com.example.emeterfinalapp/com.example.emeterfinalapp.EmeterMainActivity      (server)'
     W/InputDispatcher(  282): channel '2c504fb8      com.example.emeterfinalapp/com.example.emeterfinalapp.EnterLocationActivity (server)' ~      Consumer closed input channel or an error occurred.  events=0x8
     E/InputDispatcher(  282): channel '2c504fb8      com.example.emeterfinalapp/com.example.emeterfinalapp.EnterLocationActivity (server)' ~      Channel is unrecoverably broken and will be disposed!
     W/InputDispatcher(  282): Attempted to unregister already unregistered input channel      '2c504fb8 com.example.emeterfinalapp/com.example.emeterfinalapp.EnterLocationActivity      (server)'

I am new to android development and am really clueless of what this logcat is trying to say...any help is appreciated....

I expected error message to be more specific, hmm. Do you know how to debug on device through your IDE?

i dnt know but i wl find out and come back to you wth further updates...thnx....

I do not know how Eclipse (surelly there is somewhere Android logging functionality), but IntelliJ when running project on USB connected device or even with emulator shows all events as happens on device. You can filter these events(info, warning, error etc) so you see when it crashes Dalvik error similar to JVM

Whoo...after scratching ma head for so long atlast i got the solution
first i did debugging with real device using DDMS following its documentation which is fabulous then i discovered the following error

12-12 15:08:29.458: E/AndroidRuntime(26382): java.lang.RuntimeException: Unable to start     activity ComponentInfo{com.example.emeterfinalapp/com.example.emeterfinalapp.SelectLocation}:     android.view.InflateException: Binary XML file line #17: Error inflating class fragment

and then after few more lines of code there was another error which was eye catching

  12-12 15:08:29.458: E/AndroidRuntime(26382): Caused by: java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml

and then i realised that my api key code is a child of manifest not application which the above error pointed out and then i rectified my manifest acordingly and everythng worked just perfectly...Debugging with real device helped a lot...Thanx peter...thanx a lot...

Cool, if this is sorted can you please mark post as solved (there is a button bellow last post ;-) )

hi, i did the same which you memntioned above but i got the same error named "Binary XML file line #3: Duplicate id 0x7f050011, tag null, or parent id 0x0 with another fragment for com.google.android.gms.maps.SupportMapFragment" indly help me.

You have duplicate id in some XML layout, mostlikely the one where you showing map fragment

<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="my api key"/> 

This Code Should be Under The Application Tag
paste this code just befor aplicaion end Tag </application>

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.