2017-05-14 2 views
0

Ich habe gerade eine neue Aktivität zu meinem Android Studio-Projekt hinzugefügt, um die App-Berechtigungsüberprüfung in die eigene Aktivität zu verschieben.Wie greife ich auf "Aktivität" zu - das Symbol wird nicht aufgelöst

Die Aktivität Bildschirm zeigt eine Erklärung, um die App-Berechtigungen erfordert und warum mit ‚Weiter‘ -Button am unteren Rand für den Benutzer zu klicken, wenn sie bereit sind, die Berechtigungen (oder verweigern sie, wenn sie dies wünschen) zu akzeptieren

Ich habe die Funktion clickRequestPermissions der Schaltfläche hinzugefügt und den folgenden Code hinzugefügt, um Android die Berechtigungen anfordern zu lassen, aber ich erhalte einen Fehler, der activity kann nicht aufgelöst werden.

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

Der vollständige Code für diese Aktivität ist sehr einfach, also habe ich es hier eingeschlossen, wie ich das Problem könnte sein, glauben, wo ich das obige Snippet zu verwenden, versuche - irgendwo, dass activity nicht bekannt ist oder nicht verfügbar .

package com.myApp; 

import android.Manifest; 
import android.support.v4.app.ActivityCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Toast; 


public class permissionsCheckAndSet extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_permissions_check_and_set); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
    } 

    public void clickRequestPermissions(View v) { 
     Toast.makeText(this, "Request permissions now", Toast.LENGTH_LONG).show(); 
     doRequestPermissions(); 

    } 

    public void doRequestPermissions() { 
     ActivityCompat.requestPermissions(activity, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
       MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); 

    } 
} 

Antwort

0

Verwendung „dieses“ oder getApplicationContext() anstelle von „Aktivität“:

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

} 
+0

Arrgghhh ... Ich glaube nicht, dass ich jemals daran gewöhnen werde, wenn und wann nicht benutze 'this' in Java ... –

+0

@Fat Monk, Du wirst es schließlich verstehen, denn jetzt kannst du getApplicationContext() benutzen, um dieses Problem zu lösen. – aatj

Verwandte Themen