2014-10-02 52 views
9

我無法讓Google地圖在我的應用程序上工作。Android上的谷歌地圖不適用於應用程序,但演示效果不錯

我看到一個空白屏幕;沒有網格顯示,只有谷歌徽標和+/-縮放按鈕。

我做了什麼:

  • 我有「谷歌地圖Android的API第2版」 API啓用
  • 我與示範項目,以谷歌控制檯上的API證書列表一起加入我的項目
  • 我還爲互聯網,位置com.google.android.providers.gsf.permission.READ_GSERVICES添加了所需的權限。
  • 甚至還添加了一些帖子建議
  • 還增加了「元數據」 GOOGLE_PLAY_SERVICES_VERSION

由於演示的工作,我簡直複製MultiMapDemoActivity及其文件到我的項目,並試圖「MAPS_RECEIVE」權限打開地圖,無濟於事。

該問題可能與this問題有關。但是,他們似乎根本無法讓地圖工作。

這裏是有趣的一點,我注意到,我通常會得到這樣的:

10-02 12:29:20.376: D/REQUEST(5826): Connection opened to:https://clients4.google.com/glm/mmap/api 
10-02 12:29:20.376: D/REQUEST(5826): Open Connection 

本如下:

10-02 12:21:45.361: D/REQUEST(5826): DRD(80): 62|132 
10-02 12:21:45.361: D/REQUEST(5826): Close 
10-02 12:21:45.361: D/REQUEST(5826): Error processing: [email protected] not retrying 
10-02 12:21:45.361: D/REQUEST(5826): Retrying: [email protected] 
  • 而且,不知道這是相關的,但作爲一旦我點擊打開地圖,或在地圖打開後點擊地圖並顯示空白視圖,我就會看到:

    10-02 13:03:32.978: E/DatabaseUtils(15468): Writing exception to parcel 
        10-02 13:03:32.978:/DatabaseUtils(15468): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this 
        requires android.permission.INTERACT_ACROSS_USERS_FULL 
    

EDIT#1

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

EDIT#2 另外,聲明的包名稱爲com.A.B.C(清單);而我的項目的活動的結構爲com.A.B ..

我已經更新了我的項目結構以匹配清單的結構,但仍然看到與以前相同的錯誤,沒有任何更改。我真的在海上,因爲我不明白這裏會出現什麼問題。


一些有助於解決這個問題將不勝感激,謝謝!

+0

這似乎是一個權限問題。檢查您是否擁有清單文件中的所有必要權限。 – 2014-10-02 07:37:35

+0

我在編輯 – Hahn 2014-10-02 07:47:45

+0

時在我的項目中添加了權限我遇到了同樣的問題,但我無法使其在調試模式下工作,即未發佈的版本。 – petur 2014-10-07 08:14:44

回答

3

事實證明,我已閱讀了關於此問題的n-1個問題。最後,經過不斷的搜索,我偶然發現@Jack回答here

基本上行:"HttpsURLConnection.setDefaultSSLSocketFactory(...)"是我的代碼中的罪魁禍首。我評論說,一切正常。

注:我沒有試圖保持代碼行並修改它以使地圖工作。如果我需要/做,我會發表評論。

+0

2天搜索答案,然後看到這個!萬分感謝! – Hadi 2017-01-09 10:01:25

0

這些都是你根據Google文檔所需要的權限:

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<!-- The following two permissions are not required to use 
    Google Maps Android API v2, but are recommended. --> 
<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"/> 
+0

我剛剛添加了我擁有的權限,是的,該功能也包含在內。 – Hahn 2014-10-02 07:58:36

-3

添加那些在您的清單文件

<permission 
    android:name="xxx.xxxx.xxxx.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature" /> 


<uses-permission android:name="xxx.xxxx.xxxx.permission.MAPS_RECEIVE" /> 
<uses-permission android:name="xxx.xxxx.xxxx.permission.READ_GSERVICES" /> 

請將xxx.xxxx.xxxx替換爲您的軟件包名稱

+0

我添加了權限,但它並不是v2中必需的。仍然沒有改變。 – Hahn 2014-10-05 12:14:16

1

你的谷歌關鍵字怎麼樣?這條線在清單文件:

<meta-data android:name="com.google.android.maps.v2.API_KEY" ....

我也有這樣的行爲掙扎不斷。在這種情況下,您想驗證的第一件事情是,您從debug.keystore文件獲得的密鑰確實是您向Google註冊的密鑰。當您在本地調試應用程序時,將使用此密鑰。

但是,請注意,當您釋放應用程序時,您將需要另一個密鑰庫文件。在簽名時,您應該創建另一個密鑰庫,並使用Google註冊。

2

您需要將SHA1指紋添加到公共API訪問。 轉到eclipse>偏好設置。 Android>構建並複製您的默認日食SHA1指紋。

現在去https://console.developers.google.com選擇您的應用程序, 'API和權威性'> '憑證'>並點擊 '修改允許Android應用程序' 把你的SHA1 figerfirnt這樣的:

XX:XX:XX:XX: XX ... XX; com.your.pakage.app

+0

已經完成了。事實上,我嘗試了不同的按鍵(並在谷歌的控制檯上添加了他們的SHA1)。問題甚至沒有改變。我遇到了和以前一樣的問題... – Hahn 2014-10-07 18:59:23

+0

有什麼方法可以用Android Studio檢查SHA1嗎? – Pkmmte 2014-11-21 01:21:09

1

我也有這個問題,我花了很多時間來解決它,最後我做了這些步驟,它終於工作了!

  • 執行相同的步驟,它遵循這裏https://developers.google.com/maps/documentation/android/start
  • 如果你想要測試,而不是當你安裝你的應用在Play商店中,你使用的釋放證明你的項目使用調試證書指紋。
  • 不要忘記添加Google API的價值,並用它替換「API_VALUE」。

  • 更改你的項目構建目標到谷歌的API:項目>屬性>機器人>的目標。

希望這有助於..

相關問題