2013-12-02 2 views
0

Я импортировал google_play_services_lib из дополнительных приложений Eclipse в свою Рабочую область. Я создал новый Android-проект и включил google_play_services_lib в качестве библиотеки. Мой проект имеет андроида-поддержка-v4.jar и Google-игра-services.jarGoogle Maps v2 для Android 10 не работает даже при использовании SupportMapFragment

Теперь мой файл манифеста:

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="16" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

<!-- add for map2 --> 
<permission 
    android:name="com.example.mapdemo.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature" /> 

<meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="MY API NUMBER" /> 

<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.phanism.gingerbreadmaps.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> 

</manifest> 

Мои activity_main:

package com.phanism.gingerbreadmaps; 
import com.google.android.gms.maps.SupportMapFragment; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

public class MainActivity extends FragmentActivity { 

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

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMap().setMyLocationEnabled(true); 
} 

} 

И мой файл макета:

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

Когда я компилировать код выше, в эмуляторе, меня просят обновить Google Play Store. Когда я нажимаю OK, я получаю эту ошибку. На устройстве, я мое приложение рушится напрямую, и когда я смотрю на отладку, это ошибка, которую я получаю.

12-03 08:43:06.851: E/AndroidRuntime(620): FATAL EXCEPTION: main 
12-03 08:43:06.851: E/AndroidRuntime(620): java.lang.NullPointerException 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1409) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.app.Activity.startActivityForResult(Activity.java:3351) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.app.Activity.startActivityForResult(Activity.java:3312) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:824) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.app.Activity.startActivity(Activity.java:3522) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.app.Activity.startActivity(Activity.java:3490) 
12-03 08:43:06.851: E/AndroidRuntime(620): at com.google.android.gms.dynamic.a$5.onClick(Unknown Source) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.view.View.performClick(View.java:4084) 
12-3 08:43:06.851: E/AndroidRuntime(620): at android.view.View$PerformClick.run(View.java:16966) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.os.Handler.handleCallback(Handler.java:615) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.os.Looper.loop(Looper.java:137) 
12-03 08:43:06.851: E/AndroidRuntime(620): at android.app.ActivityThread.main(ActivityThread.java:4745) 
12-03 08:43:06.851: E/AndroidRuntime(620): at java.lang.reflect.Method.invokeNative(Native Method) 
12-03 08:43:06.851: E/AndroidRuntime(620): at java.lang.reflect.Method.invoke(Method.java:511) 
12-03 08:43:06.851: E/AndroidRuntime(620): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
12-03 08:43:06.851: E/AndroidRuntime(620): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
12-03 08:43:06.851: E/AndroidRuntime(620): at dalvik.system.NativeStart.main(Native Method) 

Может ли кто-нибудь указать мне, что я делаю неправильно.

+0

проверить эту ссылку http://www.androidhive.info/2013/08/android-working-with-google-maps-v2/ –

+0

Как указано в одном ответе, вам не хватает, чтобы установить Версию Google Play Services в вашем манифесте, но было бы замечательно, если бы вы могли опубликовать свой полный логарифм исключения. Благодаря! – fasteque

ответ

0

Добавить это в файле манифеста:

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

Надеется, что это помогает.

+0

Когда я добавил вышеприведенный код в файл манифеста, я получаю: Ошибка: Ошибка: ресурс не найден, который соответствует указанному имени (в 'value' со значением '@ integer/google_play_services_version'). –

0

Эй добавить следующий код в качестве дочернего элемента приложения тега

<meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="MY API NUMBER" /> 

Надеется, что это поможет вам, если не @Siddarth Виас сказал добавить в Google Play версии услуги тоже, то она должна работать.

EDIT

изменить Также код XML для фрагмента тега

должно быть

android:name="com.google.android.gms.maps.SupportMapFragment" 

и не

class="com.google.android.gms.maps.SupportMapFragment" 

Я надеюсь, что это должно решить вашу проблему это единственное изменение, которое я вижу для вас r код из моего кода рабочего примера.

+0

Я сделал, но получаю исключение NullPointException. –

+0

@phaneendrahari проверить мое редактирование – TNR

0

насчет apikey и service version как этот

 <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="YOUR API KEY" /> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

пожалуйста, это в вашем Manifest.xml файл и re run код, что произошло.

, пожалуйста, сообщите об ошибке или logcat.

Счастливое кодирование !.

0

У меня есть ответ на этот вопрос. Присваивающий GoogleMap должен быть в состоянии, если-как указано ниже

if(googleMap == null){ 
     GoogleMapOptions options = new GoogleMapOptions(); 
     options.compassEnabled(true).mapType(GoogleMap.MAP_TYPE_NORMAL).zoomControlsEnabled(true).rotateGesturesEnabled(true); 

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

     if(googleMap != null){ 
      googleMap.setMyLocationEnabled(true); 

      double latitude = 35.1; 
      double longitude = 43.9; 

      MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("This Works"); 
      googleMap.addMarker(marker); 

     } 
    } 

Без if-условие, я получаю NullPointerException. Если я не добавить,

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

Я получаю ошибку класса Fragment.

0
<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.phanism.gingerbreadmaps.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="MY API NUMBER" />** 

</application> 

</manifest>