Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.54 KB | None | 0 0
  1. import android.Manifest;
  2. import android.content.DialogInterface;
  3. import android.content.Intent;
  4. import android.net.Uri;
  5. import android.os.Bundle;
  6. import android.provider.MediaStore;
  7. import android.provider.Settings;
  8. import android.support.design.widget.FloatingActionButton;
  9. import android.support.design.widget.Snackbar;
  10. import android.support.v7.app.AlertDialog;
  11. import android.support.v7.app.AppCompatActivity;
  12. import android.support.v7.widget.Toolbar;
  13. import android.view.View;
  14. import android.view.Menu;
  15. import android.view.MenuItem;
  16. import android.widget.Button;
  17. import android.widget.Toast;
  18.  
  19. import com.karumi.dexter.Dexter;
  20. import com.karumi.dexter.MultiplePermissionsReport;
  21. import com.karumi.dexter.PermissionToken;
  22. import com.karumi.dexter.listener.DexterError;
  23. import com.karumi.dexter.listener.PermissionDeniedResponse;
  24. import com.karumi.dexter.listener.PermissionGrantedResponse;
  25. import com.karumi.dexter.listener.PermissionRequest;
  26. import com.karumi.dexter.listener.PermissionRequestErrorListener;
  27. import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
  28. import com.karumi.dexter.listener.single.PermissionListener;
  29.  
  30. import java.util.List;
  31.  
  32. public class MainActivity extends AppCompatActivity {
  33.  
  34. private Button btnCamera, btnStorage;
  35.  
  36. @Override
  37. protected void onCreate(Bundle savedInstanceState) {
  38. super.onCreate(savedInstanceState);
  39. setContentView(R.layout.activity_main);
  40. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  41. setSupportActionBar(toolbar);
  42.  
  43. btnCamera = findViewById(R.id.btn_camera);
  44. btnStorage = findViewById(R.id.btn_storage);
  45.  
  46. btnCamera.setOnClickListener(new View.OnClickListener() {
  47. @Override
  48. public void onClick(View view) {
  49. requestCameraPermission();
  50. }
  51. });
  52.  
  53. btnStorage.setOnClickListener(new View.OnClickListener() {
  54. @Override
  55. public void onClick(View view) {
  56. requestStoragePermission();
  57. }
  58. });
  59. }
  60.  
  61. /**
  62. * Requesting multiple permissions (storage and location) at once
  63. * This uses multiple permission model from dexter
  64. * On permanent denial opens settings dialog
  65. */
  66. private void requestStoragePermission() {
  67. Dexter.withActivity(this)
  68. .withPermissions(
  69. Manifest.permission.READ_EXTERNAL_STORAGE,
  70. Manifest.permission.WRITE_EXTERNAL_STORAGE,
  71. Manifest.permission.ACCESS_FINE_LOCATION)
  72. .withListener(new MultiplePermissionsListener() {
  73. @Override
  74. public void onPermissionsChecked(MultiplePermissionsReport report) {
  75. // check if all permissions are granted
  76. if (report.areAllPermissionsGranted()) {
  77. Toast.makeText(getApplicationContext(), "All permissions are granted!", Toast.LENGTH_SHORT).show();
  78. }
  79.  
  80. // check for permanent denial of any permission
  81. if (report.isAnyPermissionPermanentlyDenied()) {
  82. // show alert dialog navigating to Settings
  83. showSettingsDialog();
  84. }
  85. }
  86.  
  87. @Override
  88. public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
  89. token.continuePermissionRequest();
  90. }
  91. }).
  92. withErrorListener(new PermissionRequestErrorListener() {
  93. @Override
  94. public void onError(DexterError error) {
  95. Toast.makeText(getApplicationContext(), "Error occurred! ", Toast.LENGTH_SHORT).show();
  96. }
  97. })
  98. .onSameThread()
  99. .check();
  100. }
  101.  
  102. /**
  103. * Requesting camera permission
  104. * This uses single permission model from dexter
  105. * Once the permission granted, opens the camera
  106. * On permanent denial opens settings dialog
  107. */
  108. private void requestCameraPermission() {
  109. Dexter.withActivity(this)
  110. .withPermission(Manifest.permission.CAMERA)
  111. .withListener(new PermissionListener() {
  112. @Override
  113. public void onPermissionGranted(PermissionGrantedResponse response) {
  114. // permission is granted
  115. openCamera();
  116. }
  117.  
  118. @Override
  119. public void onPermissionDenied(PermissionDeniedResponse response) {
  120. // check for permanent denial of permission
  121. if (response.isPermanentlyDenied()) {
  122. showSettingsDialog();
  123. }
  124. }
  125.  
  126. @Override
  127. public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
  128. token.continuePermissionRequest();
  129. }
  130. }).check();
  131. }
  132.  
  133. /**
  134. * Showing Alert Dialog with Settings option
  135. * Navigates user to app settings
  136. * NOTE: Keep proper title and message depending on your app
  137. */
  138. private void showSettingsDialog() {
  139. AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
  140. builder.setTitle("Need Permissions");
  141. builder.setMessage("This app needs permission to use this feature. You can grant them in app settings.");
  142. builder.setPositiveButton("GOTO SETTINGS", new DialogInterface.OnClickListener() {
  143. @Override
  144. public void onClick(DialogInterface dialog, int which) {
  145. dialog.cancel();
  146. openSettings();
  147. }
  148. });
  149. builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  150. @Override
  151. public void onClick(DialogInterface dialog, int which) {
  152. dialog.cancel();
  153. }
  154. });
  155. builder.show();
  156.  
  157. }
  158.  
  159. // navigating user to app settings
  160. private void openSettings() {
  161. Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  162. Uri uri = Uri.fromParts("package", getPackageName(), null);
  163. intent.setData(uri);
  164. startActivityForResult(intent, 101);
  165. }
  166.  
  167. private void openCamera() {
  168. Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  169. startActivityForResult(intent, 100);
  170. }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement