6

ニーズgmaps場合は、この権限:私はrequestPermissionsを持つユーザーへのそれぞれに対してマシュマロ許可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
  1. 尋ねるべき?
  2. 私は何度かチェックしたが、ユーザがandroid.permission.ACCESS_FINE_LOCATIONのパーミッションを与えてくれなかったが、それ以外の理由はないという理由だけでクラッシュした。

答えて

3

requestPermissionsでユーザーに1つ1つ質問してください。

最初にrequestPermissionを使用するタイミングは?

requestPermissionは、このメソッドがPERMISSION_GRANTEDを返さない場合、checkSelfPermissionの後にのみ呼び出します。

アンドロイドMが実行時に必要とするlist of permissionが見つかります。これらの各アクセス許可は、アクセス許可グループの一部です。 WRITE_EXTERNAL_PERMISSIONは、android.permission-group.STORAGEおよびACCESS_COARSE_LOCATION/ACCESS_FINE_LOCATIONは、android.permission-group.LOCATIONである。

ユーザーがアクセス許可(例:ACCESS_COARSE_LOCATION)にアクセスできる場合、アンドロイドは自動的にこのアクセス許可グループ-i.eのアクセスを許可します。 permission-group.LOCATION - 。したがって、後でcheckSelfPermissionACCESS_FINE_LOCATIONにすると、PackageManager.PERMISSION_GRANTEDを受け取るはずです。

アプリがクラッシュした場合は、ユーザから許可グループの場所をリクエストする前に、電話をかけようとしたことを示します(例:LocationServices.FusedLocationApi.requestLocationUpdates)。

編集:

requestPermission非同期であることを忘れないでください。したがって、は、requestPermissionの直後にアクセス権が必要なメソッドを呼び出さないでください。権限が必要なメソッドを呼び出すには、許可のリストとその状態が与えられた/拒否されたonRequestPermissionsResultを上書きする必要があります。

+0

クールな回答ありがとう! – Caipivara

+0

プロセスを説明したアンドロイドパターンの動画も確認できます。https://www.youtube.com/watch?list=PLWz5rJ2EKKc-lJo_RGGXL2Psr8vVCTWjM&v=C8lUdPVSzDk – xiaomi

3

LOCATIONおよびSTORAGEグループのアクセス許可を要求する必要があります。私もかなり確信しています。細かい所在地には大雑把な許可が含まれているので、マニフェストにその行を含める必要はありません。

+0

「粗い場所には粗い許可が含まれていますか?」とはどういう意味ですか?私が1つの許可を尋ねると、それは同じグループの全員に付与されますか? – Caipivara

+3

「ACCESS_COARSE_LOCATION」は、モバイルセルデータとWi-Fi、および「ACCESS_FINE_LOCATION」、モバイルセルデータ、Wi-Fi、およびGPS用です。とても細かい場所には "粗い場所"が含まれています。 – xiaomi

関連する問題