使用Google地图版本2时出错

时间:2013-01-26 03:20:17

标签: android google-maps

嘿嘿我无法将手机上的地图加载我收到错误无法打开文件阅读我已添加google play服务作为库项目;我还在我的项目中添加了google play服务jar

的AndroidManifest.xml

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

        <uses-sdk
            android:minSdkVersion="15"
            android:targetSdkVersion="15" />
        <permission
              android:name="com.example.mapsdemo.permission.MAPS_RECEIVE"
              android:protectionLevel="signature"/>
        <uses-permission android:name="com.example.mapsdemo.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"/>
        <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" >
            <activity
                android:name="com.example.mapsdemo.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>
            <meta-data
                android:name="com.google.android.maps.v2.API_KEY"
                android:value="API KEY"/>
        </application>

    </manifest>

我的main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<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.MapFragment"/>

我的MainActivity.java

package com.example.mapsdemo;

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


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    }
}

当我在拥有Android 4.0.4的Galaxy s3上运行时,log cat给出了一个错误:

记录猫 01-25 20:11:45.690:E /(23663):无法打开文件进行阅读 01-25 20:11:45.690:E /(23663):无法打开文件进行阅读

请帮忙解决这个问题

2 个答案:

答案 0 :(得分:0)

天啊......你的“我的MainActivity.java”是错的。你没有写任何东西,所以你得到了失败。要显示Google地图,至少您的java代码必须包含以下代码,即基本和初始设置;

1. **修改您的“** my MainActivity.java ”,如下所示;

这显示了如何使用地图上的地图和标记创建简单活动。请注意我们如何处理用户设备上未安装/启用/更新Google Play服务APK的可能性。

public class MainActivity extends android.support.v4.app.FragmentActivity {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.basic_demo);
        setUpMapIfNeeded();
    }

    @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }


    private void setUpMapIfNeeded() {
        // Do a null check to confirm that we have not already instantiated the map.
        if (mMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
            // Check if we were successful in obtaining the map.
            if (mMap != null) {
                setUpMap();
            }
        }
    }


    private void setUpMap() {
        mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
    }
}

2. **修改后,按键盘上的** ctrl + shft + alphabet“o”并保存,再次运行〜!。

注意:在运行之前,必须将构建目标设置为Android 4.0.3中的“Googel API”,而不是eclipse中的Android 4.0.3。请检查一下;项目&lt;属性&lt; Android&lt;在Android 4.0.3下选择“Googel API”,

答案 1 :(得分:0)

当您没有注册用于使用Google API控制台为Android应用程序签名的数字证书的SHA-1指纹时,此错误消息显然是三星Galaxy S3的副作用Android Maps API V2。

例如,我遇到了同样的错误:

Log cat 01-25 20:11:45.690: E/(23663): Can't open file for reading

...我换了一台新的笔记本电脑,忘记将该笔记本电脑上的新调试证书的SHA-1添加到Google API控制台。

要在Windows上为调试证书修复此问题,请打开命令提示符,然后:

cd .android
keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android -v

这将打印出一堆文本,您需要在SHA-1:输出后复制文本。

然后,按照说明in the Android Maps API V2 documentation将您的SHA-1指纹后跟分号和应用包名称添加到Google API控制台。