2017-11-09 9 views
0

ここに私のManifestsスニペット権限がありません:ここでマップAPI v2の:

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

fragment'sスニペット:

@Override 
    public void onMapReady(GoogleMap googleMap) { 
     this.googleMap = googleMap; 
     setInfoWindowAdapter(); 
     if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
      this.googleMap.setMyLocationEnabled(true); 
     } else { 
      Toast.makeText(getActivity(), getString(R.string.no_permissions), Toast.LENGTH_LONG).show(); 
     } 
    } 

は、私は1つのAndroid 4.3マップの操作の罰金に開始します。しかしAndroid 6.0で起動すると、メッセージ(トースト) `が表示されます

+1

あなたは私はあなたが私はこれを行うことができますどのように – Nawrez

+0

を追加していますか? –

+0

permission' '実行時間が必要だと思うonRequestPermissionsResult – Alexei

答えて

1

Android 6+でアプリをテストしている場合、コードは正常に動作しています。あなたは、Android 6+上のユーザーから実行時アクセス権を取得する必要があります。まず

int permissionCheck = ContextCompat.checkSelfPermission(MapActivity.this, 
      Manifest.permission.ACCESS_FINE_LOCATION); 
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(MapActivity.this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1); 
    } else { 
      //permission is already granted 
    } 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { 
    switch (requestCode) { 
     case 1: { 
      if (grantResults.length > 0) { 
       if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        //granted 
       } else { 
        //not granted 
       } 
      } else { 
       //not granted 
      } 
     } 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
} 
0

を:ここではあなたがそれを行うことができる方法である第二

boolean permissionGranted = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED; 
    if(permissionGranted) { 
     // {Some Code} 
    } else { 
     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 200); 
    } 

:OnRequestPermissionsResultCallback

...implements ActivityCompat.OnRequestPermissionsResultCallback { 
実装
が許可を要求するためにこれを使用してみてください

サード:オーバーライドonRequestPermissionsResult方法は

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     switch (requestCode) { 
      case 200: { 
       if(grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        // {Some Code} 
       } 
      } 
     } 
    } 
関連する問題