Blog purpose for android basic example for android app developer. any query please my contact

Sunday, 11 July 2021

android studio runtime permission example

 android studio runtime permission example


Android defines some permissions as dangerous and some as normal. The common thing in both types is that they need to be defined in the Manifest file. From Android 6.0 only dangerous permissions are checked at runtime, normal permissions are not. An example of normal permission is android.


What are runtime permissions in Android?

Run-Time Permissions: If the Android 6 (API 23) or higher, the permission is requested at the run time during the running of the app. If the user Accepts the permissions, then that feature of the app can be used. Else to use the feature, the app requests permission again.


follow full Source code android studio runtime permission example


MainActivity.java:

package com.dynamically.permission;

import android.Manifest;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.pm.PackageManager;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;


import androidx.annotation.NonNull;

import androidx.core.app.ActivityCompat;

import androidx.core.content.ContextCompat;


public class MainActivity extends Activity {

    private int STORAGE_PERMISSION_CODE = 1;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        Button buttonRequest = findViewById(R.id.button);

        buttonRequest.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                if (ContextCompat.checkSelfPermission(MainActivity.this,

                        Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {

                    Toast.makeText(MainActivity.this, "You have already granted this permission!",

                            Toast.LENGTH_SHORT).show();

                } else {

                    requestStoragePermission();

                }

            }

        });

    }


    private void requestStoragePermission() {

        if (ActivityCompat.shouldShowRequestPermissionRationale(this,

                Manifest.permission.READ_EXTERNAL_STORAGE)) {


            new AlertDialog.Builder(this)

                    .setTitle("Permission needed")

                    .setMessage("This permission is needed because of this and that")

                    .setPositiveButton("ok", new DialogInterface.OnClickListener() {

                        @Override

                        public void onClick(DialogInterface dialog, int which) {

                            ActivityCompat.requestPermissions(MainActivity.this,

                                    new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE);

                        }

                    })

                    .setNegativeButton("cancel", new DialogInterface.OnClickListener() {

                        @Override

                        public void onClick(DialogInterface dialog, int which) {

                            dialog.dismiss();

                        }

                    })

                    .create().show();


        } else {

            ActivityCompat.requestPermissions(this,

                    new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE);

        }

    }


    @Override

    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        if (requestCode == STORAGE_PERMISSION_CODE)  {

            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                Toast.makeText(this, "Permission GRANTED", Toast.LENGTH_SHORT).show();

            } else {

                Toast.makeText(this, "Permission DENIED", Toast.LENGTH_SHORT).show();

            }

        }

    }

}





activity_main.xml:


<?xml version="1.0" encoding="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity">


    <Button

        android:id="@+id/button"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Request Permission"

        app:layout_constraintBottom_toBottomOf="parent"

        app:layout_constraintLeft_toLeftOf="parent"

        app:layout_constraintRight_toRightOf="parent"

        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>




3.AndroidManifest.xml:


<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.dynamically.permission">


    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


    <application

        android:allowBackup="true"

        android:icon="@mipmap/ic_launcher"

        android:label="@string/app_name"

        android:roundIcon="@mipmap/ic_launcher_round"

        android:supportsRtl="true">

        <activity android:name=".MainActivity2"></activity>

        <activity android:name=".MainActivity">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>


</manifest>



4.colors.xml:


<?xml version="1.0" encoding="utf-8"?>

  <resources>

      <color name="purple_200">#FFBB86FC</color>

      <color name="purple_500">#FF6200EE</color>

      <color name="purple_700">#FF3700B3</color>

      <color name="teal_200">#FF03DAC5</color>

      <color name="teal_700">#FF018786</color>

      <color name="black">#FF000000</color>

      <color name="white">#FFFFFFFF</color>

  </resources>


5.strings.xml:

<resources>

    <string name="app_name">Permission</string>

</resources>




No comments:

Post a Comment