Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android常用的電話操作

android常用的電話操作

編輯:關於Android編程

給大家分享一下我的一個Android工具類,可以獲取手機裡面的各種信息,包括撥打電話, 獲取所有聯系人姓名及電話,插入聯系人姓名及電話,插入聯系人姓名及電話,插入通話記錄,獲取用戶所有短信,批量插入短信,讀取文件從SDcard,寫入文件到SDcard。。。。。 [java]   package com.canlong.util;      import java.io.ByteArrayOutputStream;   import java.io.File;   import java.io.FileInputStream;   import java.io.FileOutputStream;   import java.io.IOException;   import java.util.ArrayList;   import java.util.List;      import android.content.ContentProviderOperation;   import android.content.ContentResolver;   import android.content.ContentUris;   import android.content.ContentValues;   import android.content.Context;   import android.content.Intent;   import android.database.Cursor;   import android.database.sqlite.SQLiteException;   import android.net.Uri;   import android.os.Environment;   import android.provider.CallLog;   import android.provider.ContactsContract;   import android.provider.ContactsContract.CommonDataKinds.Phone;   import android.provider.ContactsContract.CommonDataKinds.StructuredName;   import android.provider.ContactsContract.RawContacts;   import android.provider.ContactsContract.RawContacts.Data;      import com.canlong.javabean.CallLogModel;   import com.canlong.javabean.ContactsInfo;   import com.canlong.javabean.SmsInfo;      public class Util {       /*       * 檢測SDcard是否正常       */       public static boolean checkSDcard() {           return Environment.getExternalStorageState().equals(                   Environment.MEDIA_MOUNTED);       }          /*       * 讀取文件從SDcard       */       public static String readFileFromSDcard(String path, String filename)               throws IOException {           if (!checkSDcard()) {               return null;           }           path = Environment.getExternalStorageDirectory().getAbsolutePath()                   + "/" + path;           File dir = new File(path);           if (!dir.exists())               dir.mkdirs();              FileInputStream inStream = new FileInputStream(new File(dir, filename));           ByteArrayOutputStream outStream = new ByteArrayOutputStream();           byte[] buffer = new byte[1024];           int len = 0;           while ((len = inStream.read(buffer)) != -1) {               outStream.write(buffer, 0, len);           }           byte[] data = outStream.toByteArray();           outStream.close();           inStream.close();           return new String(data);       }          /*       * 寫入文件到SDcard       */       public static boolean writeFileToSDcard(String path, String filename,               String content, boolean append) throws IOException {           byte[] buffer = content.getBytes();           if (!checkSDcard()) {               return false;           }           path = Environment.getExternalStorageDirectory().getAbsolutePath()                   + "/" + path;           File dir = new File(path);           if (!dir.exists())               dir.mkdirs();           FileOutputStream out = new FileOutputStream(new File(dir, filename),                   append);           out.write(buffer);           out.flush();           out.close();           return true;       }          /*       * 撥打電話       */          public static void callPhone(String number, Context context) {           Intent intent = new Intent();           intent.setAction(Intent.ACTION_CALL);           intent.setData(Uri.parse("tel:" + number));           context.startActivity(intent);       }          /*       * 獲取所有聯系人姓名及電話       */          public static List<ContactsInfo> getAllContacts(Context context) {           List<ContactsInfo> resultList = new ArrayList<ContactsInfo>();              ContentResolver cr = context.getContentResolver();           Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,                   null, null, null);           while (cur.moveToNext()) {               // 得到名字               String name = cur.getString(cur                       .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));               // 得到電話號碼               String contactId = cur.getString(cur                       .getColumnIndex(ContactsContract.Contacts._ID)); // 獲取聯系人的ID號,在SQLite中的數據庫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)); // 手機號碼字段聯系人可能不止一個                   resultList.add(new ContactsInfo(name, strPhoneNumber));               }           }              return resultList;       }          /*       * 插入聯系人姓名及電話       */          public static void insertContacts(String name, String number,               Context context) {           if (name == null || number == null)               return;           ContentResolver cr = context.getContentResolver();           // 首先向RawContacts.CONTENT_URI執行一個空值插入,目的是獲取系統返回的rawContactId           ContentValues values = new ContentValues();           Uri rawContactUri = cr.insert(RawContacts.CONTENT_URI, values);           long rawContactId = ContentUris.parseId(rawContactUri);           values.clear();           // 往data表入姓名數據           values.put(Data.RAW_CONTACT_ID, rawContactId);           values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);           values.put(StructuredName.DISPLAY_NAME, name);           cr.insert(ContactsContract.Data.CONTENT_URI, values);              // 往data表入電話數據           values.clear();           values.put(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);           values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);           values.put(Phone.NUMBER, number);           values.put(Phone.TYPE, Phone.TYPE_MOBILE);           cr.insert(ContactsContract.Data.CONTENT_URI, values);          }          /*       * 批量插入聯系人姓名及電話       */          public static void insertContactsList(List<ContactsInfo> listData,               Context context) throws Exception {           // 文檔位置:reference\android\provider\ContactsContract.RawContacts.html           ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();           ContentResolver cr = context.getContentResolver();              // 插入第幾個人的信息           int rawContactInsertIndex = 0;              for (int i = 0; i < listData.size(); i++) {               ContactsInfo info = listData.get(i);               // 插入當前編號人的空行               ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)                       .withValue(RawContacts.ACCOUNT_TYPE, null)                       .withValue(RawContacts.ACCOUNT_NAME, null).build());               // 插入當前編號人的姓名               ops.add(ContentProviderOperation                       .newInsert(                               android.provider.ContactsContract.Data.CONTENT_URI)                       .withValueBackReference(Data.RAW_CONTACT_ID,                               rawContactInsertIndex)                       .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)                       .withValue(StructuredName.GIVEN_NAME, info.getName())                       .build());               // 插入當前編號人的電話               ops.add(ContentProviderOperation                       .newInsert(                               android.provider.ContactsContract.Data.CONTENT_URI)                       .withValueBackReference(Data.RAW_CONTACT_ID,                               rawContactInsertIndex)                       .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)                       .withValue(Phone.NUMBER, info.getNumber())                       .withValue(Phone.TYPE, Phone.TYPE_MOBILE).build());               // rawContactInsertIndex++;               cr.applyBatch(ContactsContract.AUTHORITY, ops);               ops.clear();           }       }          /*       * 插入通話記錄       */              public static boolean insertCallLog(List<CallLogModel> listDate,Context context){                      for(int i=0;i<listDate.size();i++){               CallLogModel info = listDate.get(i);               ContentValues values = new ContentValues();                values.put(CallLog.Calls.NUMBER, info.getNumber());               values.put(CallLog.Calls.DATE, info.getDate());               values.put(CallLog.Calls.DURATION, info.getDuration());               values.put(CallLog.Calls.TYPE,info.getType());               values.put(CallLog.Calls.NEW, info.getRend());//0已看1未看                context.getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);           }           return true;       }                     /*       * 獲取用戶所有短信       */       public static List<SmsInfo> getAllSms(Context context) {           List<SmsInfo> list = new ArrayList<SmsInfo>();           final String SMS_URI_ALL = "content://sms/";           try {               ContentResolver cr = context.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");                  while (cur.moveToNext()) {                   String name;                   String phoneNumber;                   String smsbody;                   long date;                   int type;                      name = cur.getString(cur.getColumnIndex("person"));                   phoneNumber = cur.getString(cur.getColumnIndex("address"));                   smsbody = cur.getString(cur.getColumnIndex("body"));                                 date = Long.parseLong(cur.getString(cur                           .getColumnIndex("date")));                      type = cur.getInt(cur.getColumnIndex("type"));                                      // Uri personUri = Uri.withAppendedPath(                   // ContactsContract.PhoneLookup.CONTENT_FILTER_URI,                   // phoneNumber);                   // Cursor localCursor = cr.query(personUri, new String[] {                   // PhoneLookup.DISPLAY_NAME, PhoneLookup.PHOTO_ID,                   // PhoneLookup._ID }, null, null, null);                   //                   // if (localCursor.getCount() != 0) {                   // localCursor.moveToFirst();                   // name = localCursor.getString(localCursor                   // .getColumnIndex(PhoneLookup.DISPLAY_NAME));                   // }                   if (smsbody == null)                       smsbody = "";                   list.add(new SmsInfo(name, phoneNumber, smsbody, date, type));               }           } catch (SQLiteException ex) {              }              return list;       }          /*       * 批量插入短信       */       public static boolean insertSmsList(List<SmsInfo> listData, Context context) {           Uri mSmsUri = Uri.parse("content://sms/inbox");           for (int i = 0; i < listData.size(); i++) {               SmsInfo info = listData.get(i);               ContentValues values = new ContentValues();               values.put("address", info.getNumber());               values.put("body", info.getContent());               values.put("date", info.getDate());               values.put("read", info.getRead());               values.put("type", info.getType());               //values.put("service_center", "+8613010776500");               context.getContentResolver().insert(mSmsUri, values);           }           return true;       }       public static String getMD5(String instr) {           String s = null;           char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',                   'a', 'b', 'c', 'd', 'e', 'f' };           try {               java.security.MessageDigest md = java.security.MessageDigest                       .getInstance("MD5");               md.update(instr.getBytes());               byte tmp[] = md.digest();               char str[] = new char[16 * 2];                int k = 0;                for (int i = 0; i < 16; i++) {                   byte byte0 = tmp[i];                    str[k++] = hexDigits[byte0 >>> 4 & 0xf];                    str[k++] = hexDigits[byte0 & 0xf];                }               s = new String(str).toUpperCase();            } catch (Exception e) {           }           return s;       }   }     以上所涉及到的JavaBean [html]   package com.canlong.javabean;      public class CallLogModel {       private String number;       private long date;       private long duration;//以秒為單位       private int type;//1來電 2已撥 3未接       private int rend;//0已看1未看        public CallLogModel(){}       public CallLogModel(String number, long date, long duration, int type,               int rend) {           this.number = number;           this.date = date;           this.duration = duration;           this.type = type;           this.rend = rend;       }       public String getNumber() {           return number;       }       public void setNumber(String number) {           this.number = number;       }       public long getDate() {           return date;       }       public void setDate(long date) {           this.date = date;       }       public long getDuration() {           return duration;       }       public void setDuration(long duration) {           this.duration = duration;       }       public int getType() {           return type;       }       public void setType(int type) {           this.type = type;       }       public int getRend() {           return rend;       }       public void setRend(int rend) {           this.rend = rend;       }       @Override       public String toString() {           return "CallLogModel [number=" + number + ", date=" + date                   + ", duration=" + duration + ", type=" + type + ", rend="                   + rend + "]";       }          }           [html]   package com.canlong.javabean;      public class ContactsInfo {       private String name;       private String number;                     public ContactsInfo(){}              public ContactsInfo(String name, String number) {           this.name = name;           this.number = number;       }       public String getName() {           return name;       }       public void setName(String name) {           this.name = name;       }       public String getNumber() {           return number;       }       public void setNumber(String number) {           this.number = number;       }                 }         [html] view plaincopy在CODE上查看代碼片派生到我的代碼片 package com.canlong.javabean;      public class SmsInfo {       private String linkman;//聯系人       private String number;//聯系號碼       private String content;       private long date;       private int read;//0未讀 1已讀       private int type;//聯系類型 1接收 2發送  3草稿           public SmsInfo(){}       public SmsInfo(String linkman, String number, String content, long date,               int type) {           this.linkman = linkman;           this.number = number;           this.content = content;           this.date = date;           this.type = type;       }              public SmsInfo(String linkman, String number, String content, long date,               int read, int type) {           this.linkman = linkman;           this.number = number;           this.content = content;           this.date = date;           this.read = read;           this.type = type;       }       public int getRead() {           return read;       }       public void setRead(int read) {           this.read = read;       }       public String getLinkman() {           return linkman;       }       public void setLinkman(String linkman) {           this.linkman = linkman;       }       public String getNumber() {           return number;       }       public void setNumber(String number) {           this.number = number;       }       public String getContent() {           return content;       }       public void setContent(String content) {           this.content = content;       }               public long getDate() {           return date;       }       public void setDate(long date) {           this.date = date;       }       public int getType() {           return type;       }       public void setType(int type) {           this.type = type;       }       @Override       public String toString() {           return "SmsInfo [linkman=" + linkman + ", number=" + number                   + ", content=" + content + ", date=" + date + ", type=" + type                   + "]";       }          }    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved