Sponsored

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

0
41

অ্যান্ড্রয়েড 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;


                    }
                }

            }


}

Sponsored
Sponsored
Search
Categories
Read More
Nulled
ফোনের ৫ টি গোপন সেটিংস এখনই চেঞ্জ করুন | Techtunes | টেকটিউনস
তৈরী করুন উইন্ডোজের লাইভ সিডি এস এম মেহেদী আকরাম
By Nettumi 2026-09-25 03:21:16 0 47
Nulled
Xcash v1.5 Nulled - Ultimate Wallet Solution PHP Script
Xcash v1.5 Nulled – Ultimate Wallet Solution PHP Script Free Download. Xcash, a...
By Nettumi 2026-09-18 03:52:19 0 55
Other
مركز مجموعة الخليج لاسترجاع الأموال للتوعية بالاحتيال المالي
المال ظاهر على الشاشة، لكن التحويل لا يتم. هنا تبدأ العقدة فعلًا مع سحب الأموال من منصة...
By Daniel Pierce 2026-10-08 10:39:00 0 211
Tech
দরজার হাতলে নিরাপত্তাঝুঁকি, চীনে প্রায় ৪৩ লাখ বৈদ্যুতিক গাড়ি ফেরত নিচ্ছে নির্মাতারা | কমপিউটার জগৎ - Nettumi
বৈদ্যুতিক গাড়ির আধুনিক নকশায় ব্যবহৃত রিট্র্যাকটেবল বা গাড়ির বডির সঙ্গে প্রায় মিশে থাকা দরজার হাতল...
By Nettumi 2026-10-11 15:14:08 0 0
Nulled
Askk (15 April 2021) Android Social Questions/Answers Application [XServer] App Source
Askk (15 April 2021) Android Social Questions/Answers Application [XServer] App Source Code...
By Nettumi 2026-09-18 03:59:29 0 166
‎ ‎ ‎
Nettumi https://nettumi.com