/*
* Copyright (C) 2016 Ferid Cafer
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ferid.app.classroom.utility;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.View;
import com.ferid.app.classroom.R;
import com.ferid.app.classroom.listeners.PermissionGrantListener;
/**
* Created by ferid.cafer on 3/22/2016.
*/
public class PermissionProcessor {
private Activity activity;
private View view;
private PermissionGrantListener permissionGrantListener;
public static final int REQUEST_EXTERNAL_STORAGE = 101;
public PermissionProcessor(Activity activity, View view) {
this.activity = activity;
this.view = view;
}
public void setPermissionGrantListener(PermissionGrantListener permissionGrantListener) {
this.permissionGrantListener = permissionGrantListener;
}
/**
* Ask for read-write external storage permission
*/
public void askForPermissionExternalStorage() {
if (ContextCompat.checkSelfPermission(activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) { //permission yet to be granted
getPermissionExternalStorage();
} else { //permission already granted
if (permissionGrantListener != null) {
permissionGrantListener.OnGranted();
}
}
}
/**
* Request and get the permission for external storage
*/
public void getPermissionExternalStorage() {
if (ActivityCompat.shouldShowRequestPermissionRationale(activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Snackbar.make(view, R.string.grantPermission,
Snackbar.LENGTH_LONG)
.setAction(R.string.ok, new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_EXTERNAL_STORAGE);
}
}).show();
} else {
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_EXTERNAL_STORAGE);
}
}
}