Skip to content

Instantly share code, notes, and snippets.

@hossinasaadi
Created March 31, 2019 08:57
Show Gist options
  • Save hossinasaadi/dd646ec1951ee966d97d2a92b16f2bfd to your computer and use it in GitHub Desktop.
Save hossinasaadi/dd646ec1951ee966d97d2a92b16f2bfd to your computer and use it in GitHub Desktop.
Runtime Permissions In Android >= 6
package asaadi.hossin.app;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.SparseIntArray;
public abstract class RuntimePermissionsActivity extends AppCompatActivity {
private SparseIntArray mErrorString;
public abstract void onPermissionsGranted(int i);
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.mErrorString = new SparseIntArray();
}
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
int permissionCheck = 0;
for (int permission : grantResults) {
permissionCheck += permission;
}
if (grantResults.length <= 0 || permissionCheck != 0) {
finish();
} else {
onPermissionsGranted(requestCode);
}
}
public void requestAppPermissions(String[] requestedPermissions, int stringId, int requestCode) {
this.mErrorString.put(requestCode, stringId);
int permissionCheck = 0;
boolean shouldShowRequestPermissionRationale = false;
for (String permission : requestedPermissions) {
permissionCheck += ContextCompat.checkSelfPermission(this, permission);
if (shouldShowRequestPermissionRationale || ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
shouldShowRequestPermissionRationale = true;
} else {
shouldShowRequestPermissionRationale = false;
}
}
if (permissionCheck == 0) {
onPermissionsGranted(requestCode);
} else if (shouldShowRequestPermissionRationale) {
ActivityCompat.requestPermissions(this, requestedPermissions, requestCode);
} else {
ActivityCompat.requestPermissions(this, requestedPermissions, requestCode);
}
}
}
package asaadi.hossin.app;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.TextView;
import asaadi.hossin.whatsappdownloader.Utils.RuntimePermissionsActivity;
import asaadi.hossin.whatsappdownloader.Utils.Utils;
public class SplashActivity extends RuntimePermissionsActivity {
class MyRunnable implements Runnable {
MyRunnable() {
}
public void run() {
SplashActivity.this.requestAppPermissions(new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, R.string.runtime_permissions_txt, 20);
}
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView((int) R.layout.activity_splash);
TextView spashText = findViewById(R.id.spashText);
Utils.setTypeFace(this,spashText);
new Handler().postDelayed(new MyRunnable(), 500);
}
public void onPermissionsGranted(int requestCode) {
if (requestCode == 20) {
try {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
finish();
} catch (Exception e) {
e.printStackTrace();
Log.d("eeeee", e.getLocalizedMessage());
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment