إعلان مُمول

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

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;


                    }
                }

            }


}

إعلان مُمول
إعلان مُمول
البحث
الأقسام
إقرأ المزيد
Nulled
Proacademy v2.5 - LMS & Live Classes Marketplace Laravel Script - Nulled PHP Scripts
Free Download Proacademy v2.5 – LMS & Live Classes Marketplace Laravel Nulled PHP...
بواسطة Nettumi 2026-09-18 04:04:46 0 334
مهنة
1xCasino partners: Reasons to Trust and Prospects for Collaboration
Arbitrage in gambling is based on the performance of an offer, which should result in a high...
بواسطة Nettumi 2026-09-24 18:41:06 0 34
مهنة
বাংলাদেশ অভ্যন্তরীণ নৌ-পরিবহন কর্তৃপক্ষ নিয়ােগ বিজ্ঞপ্তি ২০২৬ BIWTA Job Circular 2026
4.3/5 - (45 votes)☰ মোট পদের ক্যাটাগরি০১+০১👥 মোট শূন্যপদ০১+)১ আবেদনের শেষ দিন ২২ জুলাই ২০২৬ ইং ❌...
بواسطة Nettumi 2026-09-24 18:43:00 0 46
الحالة
350+ Best Caption for Profile Picture | Short & Attitude Captions 2025
Spread the love Introduction: A profile picture speaks a thousand words. It’s a snapshot of...
بواسطة Nettumi 2026-10-03 03:36:35 0 2
Tech
Seo Checker – ওয়েবসাইটের SEO রিপোর্ট PDF ফরম্যাটে Export করার সুবিধাসহ চমৎকার SEO Audit Tool | Techtunes | টেকটিউনস
“THE BLACK-WEB” : মায়াজালে ঘেরা ইন্টারনেটের রহস্যময় অন্ধকার জগৎ EK
بواسطة Nettumi 2026-09-25 03:52:11 0 24
إعلان مُمول
إعلان مُمول
Advertisement
Ad starting...
‎ ‎ ‎
Nettumi https://nettumi.com