2016-04-20 4 views
1

Ich verwende Google Maps Code in meinem project..i hat auch die Erlaubnis in Manifest-Datei hinzugefügt, aber es gibt auch Fehler in meinem Code, die Berechtigung zum Hinzufügen sagen ..so i von net gesucht und gefunden dass die Erlaubnis hinzufügen dynamically..so i-Code hinzufügen follwing ..Zugriffsberechtigung dynamisch in Android Studio

if (Build.VERSION.SDK_INT >= 23 && 
      ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && 
      ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     return ; 
    } 

so jetzt Fehler ist, kann Symbol nicht lösen context..i sdk bin mit mir 23..please helfen

+0

Bitte legen Sie Ihren Stacktrace. – crashOveride

+0

@Ahad Murtaza: Wo hast du diesen Code geschrieben? jede Aktivität oder Fragment? Wenn ja, geben Sie 'context' als' MainActivity.this' an. – AndiGeeky

+0

Ich schreibe Code in Aktivität –

Antwort

1

Bitte fragen Sie nach Erlaubnis wie folgt:

auch
try { 
      if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
       int hasReadContactPermission = checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION); 
       if (hasReadContactPermission != PackageManager.PERMISSION_GRANTED) { 
        requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
          101); 
       } 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

unter declarion hinzufügen:

final private int REQUEST_CODE_ASK_PERMISSIONS = 124; 

Dank !!.

+0

kann das Symbol "ACCESS_FINE_LOCATION" nicht wieder auflösen .. –

+0

@ Ahad Murtaza: Bitte überprüfen Sie, ob Ihr Import gleich ist wie 'importieren android.Manifest;' ? – AndiGeeky

+0

habe ich es jetzt ... jetzt ACCESS_FINE_LOCATION ist ok..but nicht Symbol REQUEST_CODE_ASK_PERMISSIONS ... –

1
private void checkPermissionForGettingLocation() { 

     final int fineLocationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); 
     final int coarseLocationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION); 
     final int callPhonePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE); 
     if (fineLocationPermission == PackageManager.PERMISSION_GRANTED && coarseLocationPermission == PackageManager.PERMISSION_GRANTED && callPhonePermission == PackageManager.PERMISSION_GRANTED) { 
//   getLocationAndSaveInDatabaseOrEnableGPS(); 
      showGpsDialogAndGetLocation(); 

     } else { 
      boolean requestPermissionRationale = ActivityCompat.shouldShowRequestPermissionRationale(LoginActivity.this, Manifest.permission.ACCESS_FINE_LOCATION); 
      if (requestPermissionRationale) { 
       Snackbar snackbar = Snackbar.make(mRootCL, "Please provide location permission for app to work correctly. ", Snackbar.LENGTH_INDEFINITE) 
         .setAction("Settings", new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           Intent intent = new Intent(); 
           intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
           Uri uri = Uri.fromParts("package", LoginActivity.this.getPackageName(), null); 
           intent.setData(uri); 
           LoginActivity.this.startActivity(intent); 
          } 
         }); 

       snackbar.setActionTextColor(LoginActivity.this.getResources().getColor(R.color.button_green_color)); 

       View sbView = snackbar.getView(); 
       TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
       textView.setTextColor(LoginActivity.this.getResources().getColor(R.color.white)); 

       snackbar.show(); 
       //Toast.makeText(LoginActivity.this, "Location permission are required to get location.", Toast.LENGTH_SHORT).show(); 
      } else { 
       ActivityCompat.requestPermissions(LoginActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, 
         Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.CALL_PHONE}, LOCATION_PERMISSION_REQUEST_CODE); 
      } 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     switch (requestCode) { 
      case LOCATION_PERMISSION_REQUEST_CODE: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
//     getLocationAndSaveInDatabaseOrEnableGPS(); 
        showGpsDialogAndGetLocation(); 

       } 
       break; 
     } 
    }