activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/root_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" android:orientation="vertical" android:background="#e5ead3" > <Button android:id="@+id/btn_do_task" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Check Permissions" /> </LinearLayout>
MainActivity.java
package com.cfsuman.me.androidcodesnippets; import android.Manifest; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Build; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Context mContext; private Activity mActivity; private LinearLayout mRootLayout; private Button mBtnDoTask; private static simpulan int MY_PERMISSIONS_REQUEST_CODE = 123; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the application context mContext = getApplicationContext(); mActivity = MainActivity.this; // Get the widget reference from xml layout mRootLayout = findViewById(R.id.root_layout); mBtnDoTask = findViewById(R.id.btn_do_task); // Set a click listener for the button mBtnDoTask.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ checkPermission(); } } }); } protected void checkPermission(){ if(ContextCompat.checkSelfPermission(mActivity,Manifest.permission.CAMERA) + ContextCompat.checkSelfPermission( mActivity,Manifest.permission.READ_CONTACTS) + ContextCompat.checkSelfPermission( mActivity,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ // Do something, when permissions not granted if(ActivityCompat.shouldShowRequestPermissionRationale( mActivity,Manifest.permission.CAMERA) || ActivityCompat.shouldShowRequestPermissionRationale( mActivity,Manifest.permission.READ_CONTACTS) || ActivityCompat.shouldShowRequestPermissionRationale( mActivity,Manifest.permission.WRITE_EXTERNAL_STORAGE)){ // If we should give explanation of requested permissions // Show an alert dialog here with request explanation AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); builder.setMessage("Camera, Read Contacts and Write External" + " Storage permissions are required to do the task."); builder.setTitle("Please grant those permissions"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ActivityCompat.requestPermissions( mActivity, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_EXTERNAL_STORAGE }, MY_PERMISSIONS_REQUEST_CODE ); } }); builder.setNeutralButton("Cancel",null); AlertDialog dialog = builder.create(); dialog.show(); }else{ // Directly request for required permissions, without explanation ActivityCompat.requestPermissions( mActivity, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_EXTERNAL_STORAGE }, MY_PERMISSIONS_REQUEST_CODE ); } }else { // Do something, when permissions are already granted Toast.makeText(mContext,"Permissions already granted",Toast.LENGTH_SHORT).show(); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){ switch (requestCode){ case MY_PERMISSIONS_REQUEST_CODE:{ // When request is cancelled, the results array are empty if( (grantResults.length >0) && (grantResults[0] + grantResults[1] + grantResults[2] == PackageManager.PERMISSION_GRANTED ) ){ // Permissions are granted Toast.makeText(mContext,"Permissions granted.",Toast.LENGTH_SHORT).show(); }else { // Permissions are denied Toast.makeText(mContext,"Permissions denied.",Toast.LENGTH_SHORT).show(); } return; } } } }
AndroidManifest.xml [Permissions]
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_CONTACTS"/>
Komentar
Posting Komentar