Merge branch 'feature/remove_permission_logic' into feature/abstract-paging-provider
This commit is contained in:
commit
e566c09329
|
|
@ -22,26 +22,17 @@ package ru.touchin.roboswag.components.navigation;
|
|||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import ru.touchin.roboswag.components.navigation.activities.BaseActivity;
|
||||
import ru.touchin.roboswag.components.utils.PermissionState;
|
||||
import ru.touchin.roboswag.components.utils.UiUtils;
|
||||
import rx.Observable;
|
||||
import rx.subjects.PublishSubject;
|
||||
|
||||
/**
|
||||
* Created by Gavriil Sitnikov on 21/10/2015.
|
||||
|
|
@ -55,15 +46,7 @@ public abstract class AbstractBaseActivity extends BaseActivity
|
|||
|
||||
private static final String TOP_FRAGMENT_TAG_MARK = "TOP_FRAGMENT";
|
||||
|
||||
private static final String REQUESTED_PERMISSION_EXTRA = "REQUESTED_PERMISSION_EXTRA";
|
||||
private static final int REQUESTED_PERMISSION_REQUEST_CODE = 17;
|
||||
|
||||
private final Map<String, PermissionState> permissionsMap = new HashMap<>();
|
||||
|
||||
private boolean isPaused;
|
||||
@Nullable
|
||||
private String requestedPermission;
|
||||
private final PublishSubject<PermissionState> requestPermissionsEvent = PublishSubject.create();
|
||||
|
||||
/* Returns id of main fragments container where navigation-node fragments should be */
|
||||
protected int getFragmentContainerId() {
|
||||
|
|
@ -99,49 +82,10 @@ public abstract class AbstractBaseActivity extends BaseActivity
|
|||
return false;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public Observable<PermissionState> requestPermission(@NonNull final String permission, final boolean usePreviousRequest) {
|
||||
final PermissionState permissionState = permissionsMap.get(permission);
|
||||
if (permissionState != null && ((permissionState == PermissionState.GRANTED) || usePreviousRequest)) {
|
||||
return Observable.just(permissionState);
|
||||
}
|
||||
if (ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED) {
|
||||
permissionsMap.put(permission, PermissionState.GRANTED);
|
||||
return Observable.just(PermissionState.GRANTED);
|
||||
}
|
||||
requestedPermission = permission;
|
||||
ActivityCompat.requestPermissions(this, new String[]{permission}, REQUESTED_PERMISSION_REQUEST_CODE);
|
||||
return requestPermissionsEvent.first();
|
||||
}
|
||||
|
||||
@SuppressWarnings("PMD.UseVarargs")
|
||||
@Override
|
||||
public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
if (requestCode == REQUESTED_PERMISSION_REQUEST_CODE) {
|
||||
final PermissionState permissionState;
|
||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
permissionState = PermissionState.GRANTED;
|
||||
} else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
|
||||
permissionState = ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[0])
|
||||
? PermissionState.DENIED_THIS_TIME
|
||||
: PermissionState.DENIED_COMPLETELY;
|
||||
} else {
|
||||
permissionState = PermissionState.DENIED_THIS_TIME;
|
||||
}
|
||||
permissionsMap.put(requestedPermission, permissionState);
|
||||
requestedPermission = null;
|
||||
requestPermissionsEvent.onNext(permissionState);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
getSupportFragmentManager().addOnBackStackChangedListener(this);
|
||||
if (savedInstanceState != null) {
|
||||
requestedPermission = savedInstanceState.getString(REQUESTED_PERMISSION_EXTRA);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -156,12 +100,6 @@ public abstract class AbstractBaseActivity extends BaseActivity
|
|||
super.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(final Bundle stateToSave) {
|
||||
super.onSaveInstanceState(stateToSave);
|
||||
stateToSave.putString(REQUESTED_PERMISSION_EXTRA, requestedPermission);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFragmentStarted(@NonNull final Fragment fragment) {
|
||||
hideSoftInput();
|
||||
|
|
@ -278,20 +216,6 @@ public abstract class AbstractBaseActivity extends BaseActivity
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
onActivityResultProcess(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
public boolean onActivityResultProcess(final int requestCode, final int resultCode, final Intent data) {
|
||||
return requestCode == REQUESTED_PERMISSION_REQUEST_CODE
|
||||
|| UiUtils.tryForeachFragment(getSupportFragmentManager(),
|
||||
fragment -> fragment.onActivityResultProcess(requestCode, resultCode, data),
|
||||
false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(final MenuItem item) {
|
||||
if (item.getItemId() != android.R.id.home) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue