2017-12-28 45 views
-1

Hier zur Laufzeit überprüft die MainActivity code.From die onCreate() Methode von MainActivitypermissionCheck() Methode der MultiplePermission Klasse aufgerufen wird.Nullpointer bekommen, während die Erlaubnis in android

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     if(Build.VERSION.SDK_INT >= 23){ 
      MultiplePermission multiplePermission = new MultiplePermission(); 
      if(multiplePermission.permissionCheck()){ 
       Toast.makeText(this, "All permission granted", Toast.LENGTH_SHORT).show(); 
      }else{ 
       Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 
} 

MultiplePermission Klassencode folgt. Die permissionCheck() Methode dieser Klasse überprüfen Sie die Android-Berechtigung zur Laufzeit.Wenn keine Berechtigung verweigert wird, wird die gesamte Anwendung geschlossen.

Und hier ist die Fehlermeldung.

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference 
                          at android.content.ContextWrapper.checkPermission(ContextWrapper.java:669) 
                          at android.support.v4.content.ContextCompat.checkSelfPermission(ContextCompat.java:453) 
                          at testapp.android.vogella.com.permissiontest.MultiplePermission.hasPermissions(MultiplePermission.java:40) 
                          at testapp.android.vogella.com.permissiontest.MultiplePermission.permissionCheck(MultiplePermission.java:29) 
                          at testapp.android.vogella.com.permissiontest.MainActivity.onCreate(MainActivity.java:16) 
                          at android.app.Activity.performCreate(Activity.java:6664) 
                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) 
                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)  
                          at android.app.ActivityThread.-wrap12(ActivityThread.java)  
                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  
                          at android.os.Handler.dispatchMessage(Handler.java:102)  
                          at android.os.Looper.loop(Looper.java:154)  
                          at android.app.ActivityThread.main(ActivityThread.java:6077)  
                          at java.lang.reflect.Method.invoke(Native Method)  
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  

Antwort

1

Sie sollten nie ein Activity mit new Object(), wird es nicht bekommen die context Referenz starten.

MultiplePermission sollte kein Activity und in der Methode, die Sie Kontext benötigen, erhalten sie durch den Parameter:

public boolean permissionCheck(Activity activity) { 
    if (!hasPermissions(this, PERMISSIONS)) { 

     ActivityCompat.requestPermissions(activity, PERMISSIONS, PERMISSION_ALL); 
    } 
    return true; 
} 
Verwandte Themen