Я реализовал разрешения для определения местоположения RT в своем приложении и протестировал его на устройстве Nougat.Я проверил logcat, но похоже, что ContextCompat.checkSelfPermission() and ActivityCompat.requestPermission
не выполняется, и впоследствии onRequestPermissionRationale никогда не вызывается, но в настройках устройства для приложения оно всегда отображается как предоставленное разрешение
Я пробовал войти, как показано ниже вкод:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_client_home);
prefsHelper = new SharedPrefsHelper(this);
initViews();
setSupportActionBar(toolbar);
Log.d(TAG, "BEFORE CHECK");
checkPerms();
setUpDrawer();
prefsHelper.setLoggedOut(false);
getVehicles();
handlePlacesInput();
rideContinueLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (validate() && Utils.isNetwork(ClientHomeActivity.this)) {
Intent intent = new Intent(ClientHomeActivity.this, BookRideActivity.class);
intent.putExtra("start_addr", startAddr);
intent.putExtra("dest_addr", destAddr);
startActivity(intent);
clearInputs();
} else {
Snackbar.make(findViewById(android.R.id.content), "Enter Start and Drop Locations", Snackbar.LENGTH_LONG).show();
}
}
});
}
private void checkPerms() {
Log.d(TAG, "DO CHECK");
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "INSIDE CHECK");
reqPerms();
}
}
private void reqPerms() {
Log.d(TAG, "ASKING");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, AppConstants.LOC_PERMS_REQ_CODE);
}
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case AppConstants.LOC_PERMS_REQ_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "GRANTED");
} else {
if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) {
Log.d(TAG, "Permission Rationale");
} else {
reqPerms();
}
}
break;
}
}
Журнал останавливается на "DO CHECK" tag and other tags after that don't execute
.Я пытаюсь построить приложение на основе местоположения.Может кто-нибудь сказать мне, почему это происходит таким образом, это ошибка на моем устройстве или в коде?Спасибо.