Android: Google Maps API V2 отображает черный экран ECLIPSE

Я пытаюсь показать свое текущее местоположение на картах Google, но на фрагменте карты отображается черный экран.

мой файл манифеста

<?xml version = "1.1" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
    package = "com.edraky.tasksheet"
    android:versionCode = "13"
    android:versionName = "6.7" >
    <uses-sdk
        android:minSdkVersion = "11"
        android:targetSdkVersion = "26" />
    <uses-feature
        android:glEsVersion = "0x00020000"
        android:required = "true" />
    <uses-permission android:name = "android.permission.INTERNET" />
    <uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name = "android.permission.READ_PHONE_STATE" />
    <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-permission android:name = "android.permission.INTERNET" />
    <uses-permission android:name = "com.edraky.tasksheet.MAPS_RECEIVE" />
    <permission
        android:name = "com.edraky.tasksheet.permission.MAPS_RECEIVE"
        android:protectionLevel = "signature" />
    <uses-permission android:name = "com.edraky.tasksheet.permission.MAPS_RECEIVE" />

    <application
        android:allowBackup = "true"
        android:icon = "@drawable/transparentlogo"
        android:label = "@string/app_name"
        android:theme = "@style/AppTheme" >
        <activity
            android:name = ".SplashScreenActivity"
            android:label = "@string/app_name" >
        </activity>
        <activity
            android:name = ".LoginActivity"
            android:label = "@string/title_activity_login" >
        </activity>      
        <activity
            android:name = ".ContactUs_Activity"
            android:label = "@string/title_activity_contact_us" >
        </activity>
        <activity
            android:name = ".AboutUs_Activity"
            android:label = "@string/title_activity_about_us_"
            android:noHistory = "false" >
        </activity>
        <activity
            android:name = ".WelcomePage"
            android:label = "@string/title_activity_welcome_page" >
            <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 = "AIzaSyDpP-HMGNQCnFPnzODgTiJFXs00yirfhHE" />
        <meta-data
            android:name = "com.google.android.gms.version"
            android:value = "@integer/google_play_services_version" />
    </application>
</manifest>

Макет ContactUs (макет с отображением карты)

Свяжитесь с нами макет

<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"
    android:paddingBottom = "@dimen/activity_vertical_margin"
    android:paddingLeft = "@dimen/activity_horizontal_margin"
    android:paddingRight = "@dimen/activity_horizontal_margin"
    android:paddingTop = "@dimen/activity_vertical_margin"
    tools:context = "com.edraky.tasksheet.ContactUsActivity">
    <TextView
        android:id = "@+id/textView1"
        android:layout_width = "wrap_content"
        android:layout_marginTop = "40dp"
        android:layout_height = "260dp"
        android:layout_alignParentLeft = "true"
        android:layout_alignParentRight = "true"
        android:textStyle = "bold|italic"
        android:textSize = "11dp"
        android:textIsSelectable = "true" />
    <fragment
        android:id = "@+id/map"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_alignLeft = "@+id/textView1"
        android:layout_alignParentBottom = "true"
        android:layout_below = "@+id/textView1"
        android:layout_marginTop = "24dp"
        class = "com.google.android.gms.maps.SupportMapFragment"
        android:scrollbars = "vertical" />
    <Button
        android:id = "@+id/homebutton"
        android:layout_width = "100dp"
        android:layout_height = "40dp"
        android:layout_alignParentLeft = "true"
        android:layout_alignParentTop = "true"
        android:background = "@drawable/contactusicon" />
</RelativeLayout>

свяжитесь с нами класс деятельности

public class ContactUs_Activity extends FragmentActivity {
                GoogleMap mMap;
                GPSTracker gps;
                Double currLat;
                Double currLong;
                GMapV2Direction gmap;
                Button homebutton;
                TextView view1;

                @Override

                protected void onCreate(Bundle savedInstanceState) {

                                super.onCreate(savedInstanceState);
                                setContentView(R.layout.activity_contact_us);
                                homebutton = (Button) findViewById(R.id.homebutton);
                                view1 = (TextView) findViewById(R.id.textView1);
                                view1.setText("Text Shown");
                                homebutton.setOnClickListener(new OnClickListener() {
                                                @Override
                                                public void onClick(View v) {
                                                                onBackPressed();
                                                }
                                });
                                SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
                                mMap = mapFragment.getMap();
                                gps = new GPSTracker(this);
                                currLat = gps.getLatitude();
                                currLong = gps.getLongitude();
                                LatLng sydney = new LatLng(currLat, currLong);
                                mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
                                mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));    
                }
}

я включил все библиотеки и сгенерировал ключ API

Android: Google Maps API V2 отображает черный экран ECLIPSE

вывод показан ниже

Android: Google Maps API V2 отображает черный экран ECLIPSE

сообщение об ошибке не регистрируется. что могло пойти не так при отображении карты?

Примечание: тот же код работает в другом приложении с другим ключом API, конечно, и карта отображается правильно.

ВАЖНАЯ ЗАМЕТКА: приложение уже было опубликовано в магазине Google Play до добавления Maps SDK API, поэтому есть ли какие-либо изменения, которые я должен сделать с учетом этого или его несоответствия?

5
0
364
2

Ответы 2

Перейдите на console.google.com И сгенерируйте новый ключ API с таким же именем пакета (com.package.app), что и в вашем мобильном приложении, и с SHA1.

Получите новый ключ API, замените его в коде. Удалите приложение и перезапустите.

Спасибо, я пробовал это, но это не сработало, кстати, приложение уже было опубликовано в магазине Google Play до добавления Maps SDK API, так что есть ли какие-либо изменения, которые я должен сделать, учитывая это или его несоответствие?

Rana Osama 31.07.2018 12:14

Хорошо, поэтому я не использую FragmentActivity, и это не может напрямую сказать решение.

Но этот код определенно работает и показывает карту с использованием android.support.v4.app.Fragment.

import android.support.v4.app.Fragment;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;


public class OrderMapFrag extends Fragment implements OnMapReadyCallback{

    private GoogleMap mGoogleMap;
    private MapView mMapView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_order_map, container, false);
        ........
        ........
        mMapView.onCreate(savedInstanceState);
        mMapView.onResume();

       try {
            MapsInitializer.initialize(getActivity().getApplicationContext());
        } catch (Exception e) {
            e.printStackTrace();
        }
        mMapView.getMapAsync(this);
        return view;
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap = googleMap;
        //setting initial elements in map if required after this , as map got initialized properly


    }
}

Но я не использую те же элементы и разрешения, которые вы используете в Manifest. Для меня это бывшие в употреблении.

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


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

Другие вопросы по теме