Google地图应用程序在发布时崩溃

时间:2012-03-25 05:46:54

标签: android eclipse google-maps

我一直在尝试将地图添加到我的应用程序中,我已经按照Android开发人员HelloGoogleMaps教程的说明进行操作,但是当我运行maps选项时,我的地图只是强制关闭。我已经在清单

中获得了api密钥记录的权限
  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.MappDemo.mymaps"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />


    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:debuggable="true" >
        <activity
            android:name=".MappingDemoActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                 <uses-library android:name="com.google.android.maps" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>
        <activity android:name=".ShowTheMap" android:label="Lat/Long Location"> </activity>
        <activity android:name=".MapMe" android:label="Track Present Location"> </activity>
        <uses-library android:name="com.google.android.maps" />
         <uses-permission android:name="android.permission.INTERNET" />
          <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    </application>

</manifest>

除了运行代码之外,有人可以告诉是否需要配置任何东西吗?

03-25 11:50:52.217: I/Process(687): Sending signal. PID: 687 SIG: 9
03-25 11:51:00.557: D/AndroidRuntime(729): Shutting down VM
03-25 11:51:00.567: W/dalvikvm(729): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-25 11:51:00.627: E/AndroidRuntime(729): FATAL EXCEPTION: main
03-25 11:51:00.627: E/AndroidRuntime(729): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MappDemo.mymaps/com.MappDemo.mymaps.MappingDemoActivity}: java.lang.ClassCastException: com.MappDemo.mymaps.MappingDemoActivity
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.os.Looper.loop(Looper.java:123)
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.app.ActivityThread.main(ActivityThread.java:3683)
03-25 11:51:00.627: E/AndroidRuntime(729):  at java.lang.reflect.Method.invokeNative(Native Method)
03-25 11:51:00.627: E/AndroidRuntime(729):  at java.lang.reflect.Method.invoke(Method.java:507)
03-25 11:51:00.627: E/AndroidRuntime(729):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-25 11:51:00.627: E/AndroidRuntime(729):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-25 11:51:00.627: E/AndroidRuntime(729):  at dalvik.system.NativeStart.main(Native Method)
03-25 11:51:00.627: E/AndroidRuntime(729): Caused by: java.lang.ClassCastException: com.MappDemo.mymaps.MappingDemoActivity
03-25 11:51:00.627: E/AndroidRuntime(729):  at com.MappDemo.mymaps.MappingDemoActivity.onCreate(MappingDemoActivity.java:19)
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-25 11:51:00.627: E/AndroidRuntime(729):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-25 11:51:00.627: E/AndroidRuntime(729):  ... 11 more
03-25 11:51:10.013: I/Process(729): Sending signal. PID: 729 SIG: 9
03-25 11:52:16.817: D/AndroidRuntime(782): Shutting down VM
03-25 11:52:16.817: W/dalvikvm(782): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-25 11:52:16.877: E/AndroidRuntime(782): FATAL EXCEPTION: main
03-25 11:52:16.877: E/AndroidRuntime(782): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MappDemo.mymaps/com.MappDemo.mymaps.MappingDemoActivity}: java.lang.ClassCastException: com.MappDemo.mymaps.MappingDemoActivity
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.os.Looper.loop(Looper.java:123)
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.app.ActivityThread.main(ActivityThread.java:3683)
03-25 11:52:16.877: E/AndroidRuntime(782):  at java.lang.reflect.Method.invokeNative(Native Method)
03-25 11:52:16.877: E/AndroidRuntime(782):  at java.lang.reflect.Method.invoke(Method.java:507)
03-25 11:52:16.877: E/AndroidRuntime(782):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-25 11:52:16.877: E/AndroidRuntime(782):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-25 11:52:16.877: E/AndroidRuntime(782):  at dalvik.system.NativeStart.main(Native Method)
03-25 11:52:16.877: E/AndroidRuntime(782): Caused by: java.lang.ClassCastException: com.MappDemo.mymaps.MappingDemoActivity
03-25 11:52:16.877: E/AndroidRuntime(782):  at com.MappDemo.mymaps.MappingDemoActivity.onCreate(MappingDemoActivity.java:19)
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-25 11:52:16.877: E/AndroidRuntime(782):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-25 11:52:16.877: E/AndroidRuntime(782):  ... 11 more

这是我在logcat中看到的... 这就是我在mappingDemoActivity.java中所拥有的

public class MappingDemoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //add listners for all buttons
        View firstbutton= findViewById(R.id.geocode_button);
        firstbutton.setOnClickListener((OnClickListener) this);
        View secondButton = findViewById(R.id.latlong_button);
        secondButton.setOnClickListener((OnClickListener) this);
        View thirdButton = findViewById(R.id.presentLocation_button);
        thirdButton.setOnClickListener((OnClickListener) this);

    }

    public void onClick(View v)
    {
        switch(v.getId())
        {
        case R.id.geocode_button:
             Log.i("Button","Button 1 pushed");
             Intent j = new Intent(this, ShowTheMap.class);
             startActivity(j);
         break;

         case R.id.latlong_button:
             Log.i("Button","Button 2 pushed");
             Intent k = new Intent(this, ShowTheMap.class);
             startActivity(k);
         break;

         case R.id.presentLocation_button:
             Log.i("Button","Button 3 pushed");
             Intent m = new Intent(this, MapMe.class);
             startActivity(m);
         break; 
        }

    }

3 个答案:

答案 0 :(得分:0)

<uses-permission>代码必须是<manifest>的孩子,而不是<application>。 尝试更改<uses-permission>位置,它可以提供帮助。

答案 1 :(得分:0)

删除<intent-filter>

中的此代码
`<uses-library android:name="com.google.android.maps" />`

因为它已经在下面引用。

答案 2 :(得分:0)

查看SDK中包含的Google MapsDemo,我的路径是:

<强> C:\ Android的SDK \插件\插件-google_apis-google_inc_-10 \样品\ MapsDemo

我有一个非常恼人的问题(MapActivity crashes on some devices)只出现在某些(!)Android设备上,而且也没有出现在模拟器中。我做的是,删除工作演示,直到它类似于我的基本示例。然后事实证明,三星手机不接受不以 com。开头的包名,而其他设备(HTC Flyer)则这样做!但这不是您的问题,因为您使用的是 com。包名。

我可能会再想到一件事。你没有发布你的main.xml。如果您在MapView下使用嵌套的LinearLayout,这也会导致应用程序崩溃。在MapView之上它工作正常。所以万一你使用的是:

<LinearLayout ... >

    <com.google.android.maps.MapView ... />

    <LinearLayout ... >
        <Button .../>   
    </LinearLayout>

</LinearLayout>

这可能会导致您的问题。这是可重现的,并且抛出完全相同的 java.lang.ClassCastException 错误。

还要确保你的&lt; uses-permission&gt; &lt;正如之前所说的那样,在正确的位置使用库&gt; 语句。第一个必须是&lt;的直接孩子。清单&gt; 节点。第二个必须是&lt;的直接孩子。应用程序&gt; 节点。

我希望这会对你有所帮助。我对这些东西感到很疯狂。

贝恩德