কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে কন্টেন্ট প্রোভাইডার থেকে ফোন নম্বর পাওয়ার পদ্ধতি

অ্যান্ড্রয়েডে কন্টেন্ট প্রোভাইডার ব্যবহার করে ফোন নম্বর রিট্রিভ করা

এই উদাহরণটি দেখাবে কীভাবে অ্যান্ড্রয়েডের ContactsContract কন্টেন্ট প্রোভাইডার ব্যবহার করে ডিভাইসের কন্ট্যাক্ট লিস্ট থেকে ফোন নম্বর বের করা যায়।

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio খুলুন, File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল সংশোধন করুন (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:textSize="30sp"
        android:layout_height="wrap_content"
        android:text="Click"/>
</LinearLayout>

এখানে একটি ListView ব্যবহার করা হয়েছে যা কন্ট্যাক্টের নামগুলো দেখাবে।

ধাপ ৩: মেইন এক্টিভিটিতে কোড যোগ করুন (src/MainActivity.java)

package com.example.myapplication;

import android.annotation.TargetApi;
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Build;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    public static final int REQUEST_READ_CONTACTS = 79;
    ListView list;
    ArrayList<String> mobileArray;
    ArrayList<String> numberArray;

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        numberArray = new ArrayList<>();
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
            mobileArray = getAllContacts();
        } else {
            requestPermission();
        }
        list = findViewById(R.id.list);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, android.R.id.text1, mobileArray);
        list.setAdapter(adapter);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String number = numberArray.get(position);
                Toast.makeText(MainActivity.this, number, Toast.LENGTH_LONG).show();
            }
        });
    }

    private void requestPermission() {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.READ_CONTACTS)) {
            // UI দিয়ে পারমিশনের কারণ ব্যাখ্যা করুন
        } else {
            ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_CONTACTS}, REQUEST_READ_CONTACTS);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        switch (requestCode) {
            case REQUEST_READ_CONTACTS: {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    mobileArray = getAllContacts();
                } else {
                    // পারমিশন অস্বীকৃত হলে ফাংশনালিটি নিষ্ক্রিয় করুন
                }
                return;
            }
        }
    }

    private ArrayList<String> getAllContacts() {
        ArrayList<String> nameList = new ArrayList<>();
        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        if ((cur != null ? cur.getCount() : 0) > 0) {
            while (cur != null && cur.moveToNext()) {
                String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                nameList.add(name);
                if (cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) {
                    Cursor pCur = cr.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                            new String[]{id}, null);
                    while (pCur.moveToNext()) {
                        String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        numberArray.add(phoneNo);
                    }
                    pCur.close();
                }
            }
        }
        if (cur != null) {
            cur.close();
        }
        return nameList;
    }
}

ধাপ ৪: ম্যানিফেস্টে পারমিশন যোগ করুন (AndroidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.myapplication">
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <application
        android:allowBackup="true"
        android:theme="@style/AppTheme.NoActionBar"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true">
        <activity
            android:name=".MainActivity"
            android:configChanges="keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

অ্যাপ্লিকেশন চালানোর পদ্ধতি

আপনার অ্যান্ড্রয়েড ডিভাইস কম্পিউটারের সাথে সংযুক্ত করুন। Android Studio-র টুলবার থেকে Run আইকনে ক্লিক করুন এবং আপনার ডিভাইস নির্বাচন করুন। অ্যাপ চালু হলে কন্ট্যাক্টের লিস্ট দেখাবে। যেকোনো নামে ক্লিক করলে সেই নম্বরটি টোস্ট মেসেজ হিসেবে দেখাবে।

অ্যান্ড্রয়েডে কন্টেন্ট প্রোভাইডার থেকে ফোন নম্বর পাওয়ার পদ্ধতি

অ্যান্ড্রয়েডে কন্টেন্ট প্রোভাইডার থেকে ফোন নম্বর পাওয়ার পদ্ধতি

  1. অ্যান্ড্রয়েডে ডিফল্ট ফোন নম্বর পাওয়া

  2. অ্যান্ড্রয়েডে ডিফল্ট ফোন MMS ইউজার এজেন্ট পাওয়া

  3. Android-এ ArrayBlockingQueue- থেকে হেড এলিমেন্ট পাওয়ার পদ্ধতি

  4. Android-এ ফোন নম্বর আনব্লক করার ধাপে ধাপে গাইড