Patrocinado

অ্যান্ড্রয়েড রানটাইম পারমিশন

0
7

অ্যান্ড্রয়েড SDK ভার্সন ২৩ মানে মার্শম্যালো থেকে রানটাইম পারমিশন চেক করতে হয়। কিভাবে সহজেই পারমিশনটা চেক করা যায়, তা দেখব আমরা। ধরে নিচ্ছি আমরা আমাদের অ্যাপে কন্টাক্ট লিস্ট পারমিশনটা ব্যবহার করব। তার জন্য প্রথমে পারমিশনটা AndroidManifest এ যুক্ত করে নিবঃ

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

আমরা একটা বাটন রাখব, যেখানে ক্লিক করলে পারমিশনটা চেক করবে। তার জন্য লেআউট ফাইলে একটা বাটন যুক্ত করে নিবঃ

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="me.jakir.permission.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/textView" />

    <Button
        android:text="Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="41dp"
        android:layout_marginStart="41dp"
        android:layout_marginTop="66dp"
        android:id="@+id/button" />
</RelativeLayout>

পারমিশন চেক করার জন্য আমরা এভাবে চেক করতে পারিঃ checkSelfPermission(Manifest.permission.READ_CONTACTS। এরপর দেখতে পারি পারমিশন দেওয়া আছে কিনা, যদি দেওয়া না থাকে আমরা ব্যবহার কারী থেকে পারমিশন রিকোয়েস্ট করব। মার্শম্যালো এর আগের ভার্সনে পারমিশনটা চেক করতে হবে না। তাই আমরা এভাবে কোড লিখতে পারিঃ


     if (Build.VERSION.SDK_INT >= 23) {
                    if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
                            != PackageManager.PERMISSION_GRANTED) {
                        requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
                                PERMISSIONS_REQUEST_READ_CONTACTS);
                        return;
                    }
                } else {
                    // Pre-Marshmallow
                }

পারমিশন দেওয়ার পর কি কাজ করব বা কোন ফাংশন কল করব, তা আমরা করব onRequestPermissionsResult মেথডের মধ্যেঃ

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

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

            Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_LONG).show();

        } else {

            Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_LONG).show();

            // permission denied, boo! Disable the
            // functionality that depends on this permission.
        }
        return;
    }

সম্পূর্ণ MainActivity.java

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 0;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

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

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (Build.VERSION.SDK_INT >= 23) {
                    if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
                            != PackageManager.PERMISSION_GRANTED) {
                        requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
                                PERMISSIONS_REQUEST_READ_CONTACTS);
                        return;
                    }
                } else {
                    // Pre-Marshmallow
                }

            }
        });


    }

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

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

            Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_LONG).show();

        } else {

            Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_LONG).show();

            // permission denied, boo! Disable the
            // functionality that depends on this permission.
        }
        return;
    }


}

একের অধিক এক সাথে পারমিশন আমরা এভাবে চেক করতে পারিঃ

 List<String> listPermissionsNeeded = new ArrayList<>();

                    if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
                        listPermissionsNeeded.add(Manifest.permission.READ_CONTACTS);
                    }
                    if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                        listPermissionsNeeded.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
                    }

                    if (!listPermissionsNeeded.isEmpty()) {
                        ActivityCompat.requestPermissions(MainActivity.this,
                                listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), PERMISSIONS_REQUEST_READ_CONTACTS);

                    }

AndroidMenifest.xml এ তখন পারমিশন গুলো যুক্ত করতে হবেঃ

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

সম্পুর্ণ ActivityMain.java:

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 0;
    private static final int PERMISSIONS_REQUEST_WRITE_STORAGE = 1;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

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

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (Build.VERSION.SDK_INT >= 23) {


                    List<String> listPermissionsNeeded = new ArrayList<>();

                    if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
                        listPermissionsNeeded.add(Manifest.permission.READ_CONTACTS);
                    }
                    if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                        listPermissionsNeeded.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
                    }

                    if (!listPermissionsNeeded.isEmpty()) {
                        ActivityCompat.requestPermissions(MainActivity.this,
                                listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), PERMISSIONS_REQUEST_READ_CONTACTS);

                    }

                } else {
                    // Pre-Marshmallow
                }

            }
        });


    }

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

            switch (requestCode) {
                case PERMISSIONS_REQUEST_READ_CONTACTS: {

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

                        Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_LONG).show();

                    } else {

                        Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_LONG).show();

                        // permission denied, boo! Disable the
                        // functionality that depends on this permission.
                    }
                    return;
                }

                case PERMISSIONS_REQUEST_WRITE_STORAGE: {
                    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                        Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_LONG).show();

                    } else {

                        Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_LONG).show();

                        // permission denied, boo! Disable the
                        // functionality that depends on this permission.
                    }
                    return;


                    }
                }

            }


}

Patrocinado
Patrocinado
Pesquisar
Categorias
Leia mais
Nulled
DTRadio v1.6 Nulled - Online Radio, Podcasts & Live Events Flutter App (iOS - Android) with Admin Panel Source
DTRadio v1.6 Nulled – Online Radio, Podcasts & Live Events Flutter App (iOS –...
Por Nettumi 2026-09-17 18:30:22 0 42
Nulled
EYE VPN Lite v1.0 - Flutter VPN Application with Web Admin Panel Source
EYE VPN Lite v1.0 – Flutter VPN Application with Web Admin Panel Source Code Free...
Por Nettumi 2026-09-17 19:02:43 0 82
Tech
আইফোনের মত দেখতে হারমোনিওএস চালিত ফোন লঞ্চ হল চীনে - Banglatech24.com
চীনে নতুন স্মার্টফোন জিওনি জি১৩ প্রো লঞ্চ করেছে জিওনি মোবাইল। শুধুমাত্র চীনে মুক্তি পাওয়া একটি...
Por Nettumi 2026-09-25 10:17:23 0 37
Tech
চট্রগ্রাম ট্যুর ডিসেম্বর ২০১৪
১১ তারিখ কক্সবাজার থেকে চট্রগ্রাম রওনা দিয়েছি। উঠেছি একটা লোকাল বাসে। লোকাল বাসে উঠা কত যে...
Por Nettumi 2026-09-30 18:43:55 0 18
Nulled
eDemand v4.5.0 Nulled - Multi Vendor On Demand Handy Services, Handyman with Flutter App | Admin Panel | Web Version Source
eDemand v4.5.0 Nulled – Multi Vendor On Demand Handy Services, Handyman with Flutter App...
Por Nettumi 2026-09-17 18:14:07 0 61
‎ ‎ ‎
Nettumi https://nettumi.com