2

私はコルドバに基づいて Android プロジェクトを開発しています。GPS 位置情報を使用するクラスがあり、新しいパーミッション ランタイムを実装したいと考えています。

GitHub の公式ドキュメントと google プロジェクトに従っていますが、次のエラーが発生します。

java.lang.NullPointerException: null オブジェクト参照で仮想メソッド 'android.content.pm.PackageManager android.content.Context.getPackageManager()' を呼び出そうとしています

この行で:

if (ActivityCompat.shouldShowRequestPermissionRationale(GpsTrackingActivity.this,Manifest.permission.ACCESS_FINE_LOCATION))

コードは次のとおりです。

private boolean checkPermission(){
    int result = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION);
    if (result == PackageManager.PERMISSION_GRANTED){

        return true;

    } else {

        return false;

    }
}

private void requestPermission(){

    if (ActivityCompat.shouldShowRequestPermissionRationale(GpsTrackingActivity.this,Manifest.permission.ACCESS_FINE_LOCATION)){

        android.widget.Toast.makeText(getApplicationContext(),"GPS permission allows us to access location data. Please allow in App Settings for additional functionality.", android.widget.Toast.LENGTH_LONG).show();

    } else {

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

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


                Log.i(TAG_DBG, "Permission Granted, Now you can access location data.");
            } else {


                Log.i(TAG_DBG, "Please request permission");
            }
            break;
    }
}

public void startTravel(String travelId, CarProperties car) {

    Log.i(TAG_DBG, "L'utilisateur � appuy� sur Start");
    //askForPermission(Manifest.permission.ACCESS_FINE_LOCATION,LOCATION);

    if (checkPermission()) {


        Log.i(TAG_DBG," Permission already granted");
    } else {
        Log.i(TAG_DBG, "Please request permission");

    }
    if (!checkPermission()) {

        requestPermission();

    } else {

        Log.i(TAG_DBG," Permission already granted");
    }

    location = locationManager.getLastKnownLocation(provider);
    //fb:bb#105: minTime to 1/2s instead of 1s to increase the number of fixes calculating effiMiles
    locationManager.requestLocationUpdates(provider, 500, 10, this);
    ...
    ...
    ...
}

私は何を間違えたのですか?

4

0 に答える 0