1. 程式人生 > >Android跳轉到通訊錄獲取使用者名稱稱和手機號碼

Android跳轉到通訊錄獲取使用者名稱稱和手機號碼

看到App專案中有這樣一個需求,自己花時間也做了下。某些線上購買或者快遞業務等App會涉及到新增使用者地址功能,就需要編輯使用者名稱稱、手機號碼。這裡就來實現快速跳轉到通訊錄介面獲取通訊錄使用者資訊的功能。

先看效果:

這裡寫圖片描述

思路:
1.點選跳轉到通訊錄介面
2.獲取通訊錄姓名和手機號碼
3.回撥顯示姓名和手機號碼
1首先是跳轉到通訊錄介面

 Uri uri = Uri.parse("content://contacts/people");
                Intent intent = new Intent(Intent.ACTION
_PICK, uri); startActivityForResult(intent, 0);

通過設定通訊錄url跳轉,可以看到我們用回撥函式實現
2.回撥函式

 /*
    * 跳轉聯絡人列表的回撥函式
    * */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case 0:
                if(data==null
) { return; } //處理返回的data,獲取選擇的聯絡人資訊 Uri uri=data.getData(); String[] contacts=getPhoneContacts(uri); et_name.setText(contacts[0]); et_tele.setText(contacts[1]); break
; } super.onActivityResult(requestCode, resultCode, data); }

其中getPhoneContacts(uri)方法,因為手機的聯絡人和手機號並不再同一個資料庫中,所以我們需要分別做處理

private String[] getPhoneContacts(Uri uri){
        String[] contact=new String[2];
        //得到ContentResolver物件
        ContentResolver cr = getContentResolver();
        //取得電話本中開始一項的游標
        Cursor cursor=cr.query(uri,null,null,null,null);
        if(cursor!=null)
        {
            cursor.moveToFirst();
            //取得聯絡人姓名
            int nameFieldColumnIndex=cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
            contact[0]=cursor.getString(nameFieldColumnIndex);
            //取得電話號碼
            String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
            if(phone != null){
                phone.moveToFirst();
                contact[1] = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            }
            phone.close();
            cursor.close();
        }
        else
        {
            return null;
        }
        return contact;
    }

3.別忘了加許可權

 <!--獲取通訊錄許可權-->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

感覺這個體驗還是挺好,估計以後會用到,記錄在此
感覺好別忘了點贊!!重點內容!!

相關推薦

Android開發之獲取SIM卡資訊手機號碼

獲取SIM卡資訊和手機號碼的工具類,記錄一下方便以後使用 import android.content.Context; import android.telephony.TelephonyManager; /** * Created by WangJinyong on 20

Android通訊錄獲取使用者名稱稱手機號碼

看到App專案中有這樣一個需求,自己花時間也做了下。某些線上購買或者快遞業務等App會涉及到新增使用者地址功能,就需要編輯使用者名稱稱、手機號碼。這裡就來實現快速跳轉到通訊錄介面獲取通訊錄使用者資訊的功能。 先看效果: 思路: 1.點選

Android到應用商店及常見APP對應包

/** * 啟動到應用商店app詳情介面 * * @param appPkg 目標App的包名 * @param marketPkg 應用商店包名 ,如果為""則由系統彈出應用商店列表供使用者選擇,否則調轉到目標市場的應用詳情介面,某些應用商店可能會失敗 */ p

Android 系統選擇本地視頻的功能

選擇 打開文件 result 打開圖片 provide ati 迷你 nal 名稱   今天在項目開發的過程中產品要求添加選擇本地視頻的功能,於是就翻閱和查找各種資料,進行功能的開發,但是在開發過程中發現,各種不同的品牌的手機跳轉至系統選擇本地視頻的功能結果不太一樣,所以我

Android各種系統設置界面-總結

圖片 有一種 div ref hive email 安全 www. too 來自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0921/8536.html View btn1 = th

Android系統應用

收集的一些關於android系統級別的跳轉 跳轉到視訊列表 String VIDEO_UNSPECIFIED="video/*"; Intent intent=new Intent(Intent.ACTION_GET_CONTENT); intent.setType(VIDEO_

AndroidWIFI介面的四種方式

第一種 Intent intent = new Intent(); intent.setAction("android.net.wifi.PICK_WIFI_NETWORK"); startActivity(intent);   第二種 startActivity(new I

Android系統設定Settings的各個介面

系統定義的常量 有時候需要跳轉到一些系統設定介面,為了方便尋找總結一下 定義Intent 相關介面 ACTION_SETTINGS 系統設定介面 ACTION

Android 到系統鬧鐘異常

最近專案裡面要加一個新增鬧鈴的功能,設定胰島素注射提醒,自定義鬧鐘實現起來有很多細節,而且安卓現在對系統功能的日益限制,對非系統後臺服務的管控,很難實現非常完美的自定義鬧鈴。 so。乾脆跳轉到系統鬧鈴服務,本來鬧鈴這個東西就是系統服務,自己再實現就是畫蛇添足的東西,那咱就跳轉吧。

Android設定介面以及報錯的處理

       因為SDK版本不同,所以有時我們在應該程式想要跳轉到設定輔助頁面,會報異常,程式會掛掉。有時會報找不到相關類,包是沒問題的。後來在google查看了各個資料,各版本的sdk提供是有差異的,分別3.0以下和3.0以上。

Android小程式

作者:燕歆波 導讀:在app中實現點選按鈕開啟小程式頁面! 步驟 public static void openMiNi(String ysId, String path){

Android系統通知許可權設定

  測試過華為、小米、魅族跳轉下列程式碼可以支援 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Intent intent = new Intent();

Android到應用商店的APP詳情頁面

本篇文章對跳到應用商店詳情進行記錄 需求: 從App內部點選按鈕或連結,跳轉到應用商店的某個APP的詳情頁面 程式碼: public class MarketUtil { /** * 啟動到應用商店app詳情介面 *

android手機百度高德騰訊谷歌地圖、地圖傳座標、座標偏移、base64解碼相關

調起百度的native app http://developer.baidu.com/map/uri-introandroid.htm#idmykey47 座標轉換 http://api.map.baidu.com/ag/coord/convert?from=2&

Android 時跟返回時的生命週期

1 MainActivity與MainActivity1啟動模式都是standard 從MainActivity跳轉到MainActivity1,再從MainActivity1跳轉到MainActivity 開啟APP執行MainActivity的 08-20 10:45:29.065 17

android 到應用通知設定介面

4.4以下並沒有提過從app跳轉到應用通知設定頁面的Action,可考慮跳轉到應用詳情頁面,下面是直接跳轉到應用通知設定的程式碼: if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPO

Android 許可權設定介面的終極適配(適配各大定製 ROM)

▲ 前言: 當我們的使用者使用App時不小心拒絕了某項必要許可權,而導致無法正常使用。這時候希望重新去開啟該許可權,那麼問題來了,Android廠家定製的room五花八門,很多時候卻發現找不到許可權管理的入口。為了解決這一問題,如果我們應用中直接提供許可權管理入口給

Android手機系統各個設定介面的方法及其列表

android 呼叫撥號盤撥打電話 public void dialPhoneNumber(String phoneNumber) { Intent intent = new Intent(Intent.ACTION_DIAL); inte

JSP中頁面獲取表單資訊的方法述用到(hidden)(session)

假設現在有三個頁面分別是test1.jsp,test2.jsp,test3.jsp 在test1.jsp頁面中填寫名字username資訊 在test2.jsp頁面中填寫興趣愛好amuse資訊 頁面從test1.jsp中以表單形式跳轉到test2.jsp中,繼續以表單形

基於HtmlUnit實現簡單登入、頁面以及獲取有用資料部分程式碼示例(示例網站:大潤發)

首先,我們將要獲取的目標內容為商戶訂單查詢結果: 如下程式碼為登入模組程式碼(由於驗證碼解析這部分目前沒做,只能手動識別): /** * * @param username 使用者 * @param password