2016-10-25 2 views
0

Я - очень новый программист для Android, и я сейчас играю с картами Google. На данный момент я пытаюсь найти свое текущее местоположение на карте. Я изо всех сил пытался понять и реализовать разрешения, которые нужны, но теперь у меня есть проблема, что всплывающее будет постоянно всплывать. Поэтому он появляется, я разрешаю ему доступ, тогда он исчезает только для повторения процесса снова и снова, пока я не откажу ему в доступе. Извините, если это простой вопрос, но я действительно борется.Reapating android permissions pop ups

Вот код:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    static final int MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 

     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 


    /** 
    * Manipulates the map once available. 
    * This callback is triggered when the map is ready to be used. 
    * This is where we can add markers or lines, add listeners or move the camera. In this case, 
    * we just add a marker near Sydney, Australia. 
    * If Google Play services is not installed on the device, the user will be prompted to install 
    * it inside the SupportMapFragment. This method will only be triggered once the user has 
    * installed Google Play services and returned to the app. 
    */ 
    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     // Add a marker in Sydney and move the camera 
     LatLng Uni = new LatLng(53.767735, -0.368377); 
     mMap.addMarker(new MarkerOptions().position(Uni).title("Hull University")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(Uni)); 

     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
       MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); 

     if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 

      mMap.setMyLocationEnabled(true); 
     } 




    } 


    @Override 
    public void onRequestPermissionsResult(
      int requestCode, String[] permissions, int[] grantResults) { 

     switch (requestCode) { 
      case MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        Toast.makeText(this, 
          "Permission was granted", 
          Toast.LENGTH_LONG).show(); 
        return; 

       } else { 
        Toast.makeText(this, 
          "Permission denied", 
          Toast.LENGTH_LONG).show(); 
       } 
       return; 
      } 

     } 
    } 
} 

Спасибо за любую помощь.

ответ

3

Надеется, что это помогает

попробовать это:

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    LatLng Uni = new LatLng(53.767735, -0.368377); 
    mMap.addMarker(new MarkerOptions().position(Uni).title("Hull University")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(Uni)); 

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
     MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); 



    }else if(ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED){ 
     mMap.setMyLocationEnabled(true); 
    } 







} 

Убедитесь, что у вас есть все требуемые разрешения в файле манифеста слишком

<!-- Required to show current location --> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
+0

Это сработало! Спасибо! – madaxehamster01

+0

может у вас тогда отметить ответ, как принято, для других, чтобы получить выгоду от этого решения @ madaxehamster01 – Ak9637

Смежные вопросы