欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android ContentResolver獲取手機電話號碼和短信內(nèi)容

 更新時間:2017年07月20日 09:21:45   作者:踏雪羽翼  
這篇文章主要為大家詳細介紹了android ContentResolver獲取手機電話號碼、短信內(nèi)容,具有一定的參考價值,感興趣的小伙伴們可以參考一下

通過ContentResolver 獲取到手機的聯(lián)系人跟手機短信信息并顯示出來,供大家參考,具體內(nèi)容如下

1、實現(xiàn)的代碼:

package com.example.phone; 
 
 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.provider.ContactsContract.PhoneLookup; 
import android.app.Activity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteException; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
 
 
public class MainActivity extends Activity implements OnClickListener{ 
 
  private TextView text; 
  private Button button; 
  private Button sms; 
  HashMap<String, Object> map = new HashMap<String, Object>(); 
  List<String> con = new ArrayList<String>(); 
  String msg;//聯(lián)系人姓名+號碼 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);  
    initUI();     
  } 
 
  private void initUI() { 
    // TODO Auto-generated method stub  
    text = (TextView)findViewById(R.id.text); 
    button = (Button)findViewById(R.id.button);//獲取手機電話號碼 
    button.setOnClickListener(this); 
    sms = (Button)findViewById(R.id.sms);//獲取手機短信信息 
    sms.setOnClickListener(this); 
  } 
  @Override 
  public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch(v.getId()){ 
      case R.id.button: 
        getPhoneNumber();//獲取手機電話號碼 
        break; 
      case R.id.sms://獲取手機短信內(nèi)容 
        getSmsMessage(); 
        Map<String,Object> item = new HashMap<String,Object>(); 
        for(int i= 0;i<con.size();i++){ 
          text.setText(item.put("con", con.get(i))+"");//僅顯示一條 
          System.out.println("ningshengcai:"+item.put("con", con.get(i)));//打印顯示全部數(shù)據(jù)      
        } 
        break; 
      default : 
        break; 
    } 
  } 
  /** 
   * 獲取手機聯(lián)系人號碼 
   */ 
  public void getPhoneNumber(){ 
    // smslist=getListView();  
    //得到ContentResolver對象   
    ContentResolver cr = getContentResolver();    
    //取得電話本中開始一項的光標   
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);   
    while (cursor.moveToNext())   
    {   
      // 取得聯(lián)系人名字   
      int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);   
      String name = cursor.getString(nameFieldColumnIndex);   
      //name += (name);   
      // 取得聯(lián)系人ID   
      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);     
      // 取得電話號碼(可能存在多個號碼)   
      while (phone.moveToNext())   
      {   
        String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        System.out.println(name+":"+strPhoneNumber);                     
        msg += name+":"+strPhoneNumber+"\n"; 
        text.setText(msg); 
      }       
      phone.close();   
    }   
    cursor.close();  
  } 
  /** 
   * 獲取短信信息 
   * @return smsBuilder.toString() 
   */ 
  @SuppressWarnings("unused") 
  public String getSmsMessage(){   
     
    final String SMS_URI_ALL  = "content://sms/";    
    final String SMS_URI_INBOX = "content://sms/inbox";   
    final String SMS_URI_SEND = "content://sms/sent";   
    final String SMS_URI_DRAFT = "content://sms/draft";   
       
    StringBuilder smsBuilder = new StringBuilder();   
       
    try{   
      ContentResolver cr = getContentResolver();   
      String[] projection = new String[]{"_id", "address", "person",    
          "body", "date", "type"};   
      Uri uri = Uri.parse(SMS_URI_ALL);   
      Cursor cur = cr.query(uri, projection, null, null, "date desc");   
     
      if (cur.moveToFirst()) {   
        String name;    
        String phoneNumber;       
        String smsbody;   
        String date;   
        String type;   
          
        int nameColumn = cur.getColumnIndex("person"); //發(fā)送人  
        int phoneNumberColumn = cur.getColumnIndex("address");  //號碼 
        int smsbodyColumn = cur.getColumnIndex("body");  //內(nèi)容 
        int dateColumn = cur.getColumnIndex("date");  //時間 
        int typeColumn = cur.getColumnIndex("type");  //接收還是發(fā)送 
          
        do{   
          name = cur.getString(nameColumn);          
          phoneNumber = cur.getString(phoneNumberColumn);   
          smsbody = cur.getString(smsbodyColumn);   
             
          SimpleDateFormat dateFormat = new SimpleDateFormat(   
              "yyyy-MM-dd hh:mm:ss");   
          Date d = new Date(Long.parseLong(cur.getString(dateColumn)));   
          date = dateFormat.format(d);   
             
          int typeId = cur.getInt(typeColumn);   
          if(typeId == 1){   
            type = "接收";   
          } else if(typeId == 2){   
            type = "發(fā)送";   
          } else {   
            type = "";   
          }   
          //System.out.println("nsc :"+name+":"+phoneNumber+":"+smsbody+":"+date+":"+type +"\n"); 
          String smsmsg = name+":"+phoneNumber+":"+smsbody+":"+date+":"+type+"\n"; 
          con.add(smsmsg);          
          if(smsbody == null) smsbody = "";    
        }while(cur.moveToNext());   
      } else {   
        smsBuilder.append("no result!");   
      }   
          
      smsBuilder.append("getSmsInPhone has executed!");   
    } catch(SQLiteException ex) {   
      Log.d("SQLiteException in getSmsInPhone", ex.getMessage());   
    }   
    return smsBuilder.toString();   
  }   
} 

2、代碼布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:orientation="vertical" 
  tools:context=".MainActivity" > 
   
  <Button  
    android:id="@+id/button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/ph"/> 
  <Button  
    android:id="@+id/sms" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/sms"/> 
  <ScrollView 
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"> 
    <TextView 
      android:id="@+id/text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"       
      android:text="@string/hello_world" /> 
         
  </ScrollView> 
 
</LinearLayout> 

3、需要用到的權(quán)限

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android編程獲取圖片數(shù)據(jù)的方法詳解

    Android編程獲取圖片數(shù)據(jù)的方法詳解

    這篇文章主要介紹了Android編程獲取圖片數(shù)據(jù)的方法,涉及Android網(wǎng)絡(luò)通信數(shù)據(jù)流傳輸及圖片操作相關(guān)技巧,需要的朋友可以參考下
    2017-07-07
  • 完美解決EditText和ScrollView的滾動沖突(上)

    完美解決EditText和ScrollView的滾動沖突(上)

    這篇文章主要為大家詳細介紹了完美解決EditText和ScrollView滾動沖突的方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android中MPAndroidChart自定義繪制最高點標識的方法

    Android中MPAndroidChart自定義繪制最高點標識的方法

    目前在做一款軟件,要求在展示走勢圖的時候?qū)ψ罡唿c進行自定義繪制,下面這篇文章主要給大家介紹了關(guān)于Android中MPAndroidChart自定義繪制最高點標識的方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-03-03
  • 詳解Android Studio實現(xiàn)用戶登陸界面demo(xml實現(xiàn))

    詳解Android Studio實現(xiàn)用戶登陸界面demo(xml實現(xiàn))

    這篇文章主要介紹了詳解Android Studio實現(xiàn)用戶登陸界面demo,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Android顏色編輯器的制作中遇到的問題分析

    Android顏色編輯器的制作中遇到的問題分析

    Android沒有自帶顏色編輯器,為了讓用戶直觀的選擇顏色,做了這么一個控件
    2012-11-11
  • Android使用BottomNavigationBar實現(xiàn)底部導(dǎo)航欄

    Android使用BottomNavigationBar實現(xiàn)底部導(dǎo)航欄

    這篇文章主要為大家詳細介紹了Android使用BottomNavigationBar實現(xiàn)底部導(dǎo)航欄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Android中的Choreographer工作原理解析

    Android中的Choreographer工作原理解析

    Choreographer作為Android系統(tǒng)中重要的組件,負責協(xié)調(diào)App進程的UI渲染與SurfaceFlinger進程的數(shù)據(jù)合成,本文詳細分析了Choreographer的創(chuàng)建流程、VSYNC信號的調(diào)度和處理機制,揭示了其在UI渲染過程中的核心作用
    2024-10-10
  • 利用Jetpack Compose實現(xiàn)主題切換功能

    利用Jetpack Compose實現(xiàn)主題切換功能

    這篇文章主要介紹了如何利用Android中的Jetpack Compose實現(xiàn)主題切換功能,文中的示例代碼講解詳細,對我們學習有一定幫助,需要的可以參考一下
    2022-01-01
  • Android Studio無法改變Button背景顏色解決辦法

    Android Studio無法改變Button背景顏色解決辦法

    今天我來和大家探討一個在Android開發(fā)中常見但可能讓初學者感到困惑的問題,如何在Android Studio中改變Button的背景顏色,這個問題看似簡單,但實際操作中可能會遇到一些意想不到的挑戰(zhàn),接下來,我將從多個角度為大家提供解決方案,需要的朋友可以參考下
    2024-05-05
  • Android實現(xiàn)高德地圖顯示及定位

    Android實現(xiàn)高德地圖顯示及定位

    這篇文章主要為大家詳細介紹了Android實現(xiàn)高德地圖顯示及定位,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論