20

我在Android Redmi Phones版本5.1.1中遇到Google Place Picker的問題。我正在使用以下代碼啓動Google Place Picker。Google地方選擇器未在Android Mi電話上啓動

try { 
     PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); 
        startActivityForResult(builder.build(SelectLocationActivity.this), 1); 
    } catch (Exception e) { 
       e.printStackTrace(); 
       Toast.makeText(SelectLocationActivity.this,""+e.getMessage(),Toast.LENGTH_LONG).show(); 
    } 

我已添加以下權限和API密鑰和谷歌播放服務版本。

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<application> 
<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" /> 
</application> 

它正在處理每款手機,除了Android Redmi Note2。任何建議,將不勝感激。提前致謝。

+0

請註明設備的Google Play服務版本。拋出的任何異常?設備上是否存在谷歌播放服務?檢查播放服務是否可用,因爲由於中國的法律,它們在沒有播放服務的情況下發貨https://developers.google.com/android/reference/com/google/android/gms/common/GoogleApiAvailability#isGooglePlayServicesAvailable(android.content .Context)如果播放服務不存在,您必須開始解析。 –

+0

你正在收到什麼錯誤? – AndroidHacker

+1

沒有錯誤。只是活動開始並立即關閉。沒有錯誤出現在錯誤logcat @AndroidHacker – Kaushal28

回答

-1

從Android 6.0(API級別23)開始,用戶在應用程序運行時爲應用程序授予權限,而不是在安裝應用程序時授予應用程序權限。此方法簡化了應用程序安裝過程,因爲用戶在安裝或更新應用程序時無需授予權限。它還使用戶可以更好地控制應用程序的功能;例如,用戶可以選擇給相機應用程序訪問相機,但不能訪問設備位置。用戶可以隨時撤銷權限,只需轉到應用的「設置」屏幕即可。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.myapp" > 
    ... 
    <uses-permission 

機器人:名稱= 「android.permission.ACCESS_COARSE_LOCATION」/> 機器人:名稱= 「android.permission.ACCESS_FINE_LOCATION」/>

機器人:名稱= 「android.permission.ACCESS_COARSE_LOCATION」/ > ...

在OnCreate中將此代碼添加到您的活動

askForPermission(Manifest.permission.ACCESS_FINE_LOCATION,LOCATION); 

/// C所有這些方法

private void askForPermission(String permission, Integer requestCode) { 
     if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) { 

      // Should we show an explanation? 
      if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permission)) { 

       //This is called if user has denied the permission before 
       //In this case I am just asking the permission again 
       ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode); 

      } else { 

       ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode); 
      } 
     } else { 
      Toast.makeText(this, "" + permission + " is already granted.", Toast.LENGTH_SHORT).show(); 
     } 
    } 
+0

我已經在我的應用程序中添加了這段代碼。僅供參考:紅米Note 3默認的Android版本是5.1棒棒糖。而我的代碼在6.0或更高版本中可以在其他手機中正常工作。所以這個特定的手機不需要運行權限。請在回答問題之前做研究:) – Kaushal28

1

根據您的清單文件,我相信你添加的關鍵manifest標籤內,而不是application。基於Android的文檔,關鍵應加入這樣的:

<application> 
... 
    <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="YOUR_API_KEY"/> 
</application> 

不幸的是,我不能和你提到的設備測試,但我記得我類似的問題與Samsung設備(代碼正在研究每個設備,除了一個)。另外,再次檢查日誌,可能有一條消息,你錯過了。

+0

首先,你對關鍵配置是正確的。但這個問題不是我問的,所以不能編輯。正如你所提到的,我正確放置了我的鑰匙。但是,如果密鑰放置錯誤,則不適用於任何設備。但是,在所有其他設備上(我也在仿真器上測試過,並且它正在工作),它的工作情況非常好。另外,我在開始構建應用程序時,也遇到了同樣的問題(關鍵放置錯誤)。如果是這種情況,地方選擇器活動應該打開,但不應該顯示位置建議或自動建議等順便說一句感謝您給予您的時間:) – Kaushal28

+0

確保您的Redmi手機安裝了GoogleServices。 – ohdroid

+0

@ohdroid如何正確檢查它? – Kaushal28

相關問題