android通訊錄監聽
『壹』 android手機通訊錄頁面布局怎麼做
基於android的通訊錄的設計與實現
一:引言
學了android的開發與設計課後,對計算機軟硬體相關知識有了一定的了解;基於此,設計與實現一個在Android系統上運行的手機通訊管理軟體,實現手機通訊錄的基本功能,包括:添加聯系人、查看聯系人、修改聯系人、刪除聯系人、撥打電話、發送簡訊、查詢聯系人,以及聯系人的導入導出功能即聯系人的備份。
主要開發基於Android
的手機的通訊管理軟體。以Java語言為基礎,結合Android移動開發平台,並利用Android提供的SDK,實現在Android平台上運行的手機通訊錄,方便廣大手機用戶更加便捷地對聯系人的信息進行管理。該手機通訊錄面向所有的Android手機用戶,為他們提供更實際便捷的手機服務,具有撥號、通訊記錄等基本功能。該通訊錄的數據導出功能是該軟體的一個特色,可以實現聯系人數據導出到文本,實現數據備份。大家生活當中經常遇到手機丟失,出現故障,和其他一些事故。最擔心的就是丟失手機里的電話號碼。
1.1. 選題目的及意義
隨著3G網路的使用,移動終端不再僅是通訊網路的終端,還將成為互聯網的終端。因此,移動終端的應用軟體和需要的服務將會有很大的發展空間。在Google和Android手機聯盟的共同推動下,Android在眾多手機操作系統中脫穎而出,受到廣大消費者的歡迎。
手機通訊錄作為手機的基本功能之一,每天我們都在頻繁地使用著。根據手機功能使用調查顯示,有八成以上的消費者使用手機通訊錄功能。隨著手機通訊錄功能的不斷加強與完善,手機通訊錄對於人們的意義,已不僅僅像記事簿一樣顯示通訊地址,而是向著個性化、人性化的方向發展。通訊錄從無到有,從英文到中文,經過了十幾年的發展歷程,今後的發展趨勢就是從通訊錄發展為名片夾,也就是在一個人名下,可以存儲座機、手機、單位、地
址、電子郵件等內容。這種名片夾在電話薄的基礎上,大大豐富了內容,同時結構也發生了革命性變化,而且隨著手機的發展,相信更優秀的通訊錄會越來越受到社會各層人士的喜愛。
1.2. 項目背景
Android一詞的本義指"機器人",同時也是Google在2007年11月5日宣布的基於Linux內核的開源手機系統的名稱,中文注冊商標"安致",
該平台由操作系統、中間件、用戶界面和應用軟體組成,是一個為移動終端打造的真正開放和完整的智能手機系統。其早期為Google開發,後由開放手機聯盟( Open
Handset Alliance)開發。它採用了軟體堆層(software
stack,又名以軟體疊層)的架構,主要分為三部分,底層以Linux內核為基礎,由C語言開發,只提供基本功能;中間層包括資料庫Library和虛擬機Virtual
Machine,由C++開發;最上層是由各公司自行開發,以Java編寫的各種應用軟體,如通話程序,簡訊程序等。 二:功能需求。
根據用戶需求總結出來的反映了用戶需求的系統邏輯模型轉換成可以實施的物理模型,把整個設計劃分成單元,主要解決如何去做的問題,要想創建整個通訊錄首先要通過增加聯系人信息來創建通訊錄。整個應用程序應劃分為4個模塊,分別是程序啟動、用戶界面、後台服務和資料庫適配器,各模塊之間的關系如圖所示:
從上圖中不難看出,後台服務是整個應用程序的核心,主要是「數據獲取模塊」,負責周期性
的從用戶輸入的內容中獲取信息。
後台服務在程序啟動時就由AppWidgetProvider啟動,也可由用戶界面通過startService(進行啟動,啟動後的後台服務將一直保持運行狀態。同時用戶界面從數據獲文本信息。一方面可以避免因網路通信不暢造成界面失去響應;另一方面,後台服務可以及時更新數據,以保證數據的准確性。資料庫適配器封裝了所有對SQLite資料庫操作的方法用戶界面和後台服務會調用它來實現資料庫操作。在完成用戶界面設計、資料庫設計和模塊設計後,至此程序設計階段基本完成。文本編輯器中不同功能界面之間的切換,用戶可以通過點擊menu鍵來切換到不同的功能界面,不同功能界面的切換如圖
三:設計思路。
開發的基於Android手機通訊錄具有十分重要的意義。可以根據客戶需求的實際情況,開發一款實用的手機通訊錄軟體。
本設計主要是採用Android的View框架編寫,部分框架運用Android中的其他組件。
當進入通訊錄的增加界面時,調用的是一個用相對布局RelativeLayout的XML布局文件。其中包括了2個Button,分別實現了不同的功能。
第一個Button是保存內容,當輸入聯系人姓名和號碼是點擊保存實現此功能。說到保存,不得不說得是保存信息涉及添加新聯系人的頭像,姓名,手機號碼,辦公室電話,家庭電話,職務職稱,單位名稱,地址,郵政編碼,Email,其他聯系方式,備注這些信息。
第二個Button是返回,顧名思義就是從增加界面返回前一界面。
響應menu鍵的觸發事件,設置底部菜單是否可見,並通過對底部菜單選項的監聽實現底部菜單中的增加、查找、刪除、菜單、退出等功能,其中菜單包括顯示所有、刪除所有、號碼備份功能。
在聯系人信息界面時通過點擊menu鍵,會彈出通信功能框,通過與發信息、打電話、發郵件功能介面的套用來實現。
四:流程圖
一個好的系統設計的步驟決定了程序是否能按照設計者的目的按時完成,是否能在規定的時間內按照設計者的要求高質量的完成程序必要的功能。並且按照標準的設計步驟對程序進行調試,測試,以及後期的優化完善,使程序更加具有健壯性和可用性。通過對通訊錄功能、系統模塊、用戶需求方面進行全方位的分析制定開發流程,開發流程如圖4-1所示。
圖4-1開發流程圖
採用標準的開發流程確定系統具有用戶管理功能,聯系人增刪改功能,通訊功能,查找功能,備份等功能。系統的功能圖如4-2所示。
圖4-2 系統功能圖
通過對系統的功能結構的分析,設計後系統運行流程是系統運行後用戶將進入通訊錄主界面,可以看到聯系人列表。通過點擊MENU界面的增加功能選項可以新增聯系人
『貳』 如何調用android通訊錄
這個過程有三步:
1)許可向你的應用程序的manifest中添加讀取通訊錄數據的許可
<uses-permission android:name="android.permission.READ_CONTACTS"/
2)調用Contact Picker
在你的activity中,創建一個Intent,用來請求系統查找一個能夠執行一個從Contacts URI的項目中發出的PICK動作的activity,
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
調用startActivityForResult在Intent中傳遞(和一個整數的請求代碼,在這個例子中是PICK CONTACT )。這將導致android啟動一個已經被等級的activity,用來支持在People.CONTENT URI上的ACTION_PICK ,然後當按下選擇(或者取消)的時候返回到這個activity。startActivityForResult(intent, PICK_CONTACT);
3)仍然在你的activity中,重寫onActivityResul方法來監聽在你的第二個步驟中啟動的activi'select a contact' activity的回調。你應該檢查反饋的請求代碼是否匹配你的期望值,結果代碼是否是 RESULT_OK。
通過在數據Intent參數中調用getData()你可以獲得選擇的聯系人的URI。為了獲得選擇的聯系人的名字你需要使用URI從返回的游標中創建一個新的查詢和提取的參數。
@Overridepublic void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case (PICK_CONTACT) :
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));}}break;}}
『叄』 android 怎麼獲取通訊錄聯系人
Example_03_02的原代碼:
package com.yarin.android.Examples_03_02;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract;import android.provider.ContactsContract.PhoneLookup;import android.widget.TextView;
public class Activity01 extends Activity{
public void onCreate(Bundle savedInstanceState)
{
TextView tv = new TextView(this);
String string = "";
super.onCreate(savedInstanceState);
//得到ContentResolver對象
ContentResolver cr = getContentResolver();
//取得電話本中開始一項的游標
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
//向下移動一下游標
while(cursor.moveToNext())
{
//取得聯系人名字
int nameFieldColumnIndex =cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameFieldColumnIndex);//取得電話號碼
int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);//報錯,返回值為-1.
String number = cursor.getString(numberFieldColumnIndex);
string += (contact+":"+number+"
");
}
cursor.close();
//設置TextView顯示的內容
tv.setText(string);
//顯示到屏幕
setContentView(tv);
}
}
參考android官方API資料及網上大牛們的經驗,本代碼修改如下:
package com.example.helloandroid;import android.app.Activity;import android.os.Bundle;import android.provider.ContactsContract;import android.provider.ContactsContract.PhoneLookup;import android.database.Cursor;import android.widget.TextView;import android.content.ContentResolver;
public class Activity01 extends Activity{
public void onCreate(Bundle savedInstanceState)
{
TextView tv = new TextView(this);
String string = "";
super.onCreate(savedInstanceState);
//得到ContentResolver對象
ContentResolver cr = getContentResolver();
//取得電話本中開始一項的游標
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
//向下移動游標
while(cursor.moveToNext())
{
//取得聯系人名字
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = 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);
while(phone.moveToNext())
{
String Number = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); string += (contact + ":" + Number + "
");
}
}
cursor.close();
//設置TextView顯示的內容
tv.setText(string);
//顯示到屏幕
setContentView(tv);
}
}
『肆』 android手機通訊錄以及通話記錄在哪個文件夾
在內部存儲卡的的data/com.android.provides.contacts裡面。
以三星的s8為例
找到通訊錄以及通話記錄方法:
1、打開三星的s8手機,在系統界面找到「我的文件」。
『伍』 安卓手機應用好多讀取聯系人信息,通話狀態,這些應用真能讀到嗎
是的,"讀取聯系人信息" 這個是真能讀取聯系人資料庫,所有欄位都可以讀到,但是「通話狀態」只是讀取可以監聽什麼時候來電話來,什麼時候掛斷所謂的狀態,不是說在監聽你的通話內容。
目前很多手機應用都是要讀取手機的聯系人、信息、通話記錄等個人隱私信息,除了少部分社交類應用需要用到部分個人信息外,其實大部分應用完全沒有必要讀取用戶的手機個人信息。
很多應用之所以要讀取用戶的個人手機信息,主要通過收集、利用或販賣用戶隱私信息,達到非法牟利的目的,不但嚴重侵犯了用戶的個人隱私,而且很容易造成用戶的資金損失,所以對於無需使用個人信息,還違規讀取個人手機信息的應用盡量不要安裝。
相關信息
其實各大互聯網公司的APP普遍存在違規獲取個人手機信息的問題,並將這些信息用於商業用途,並美其名曰為「大數據」,而「大數據殺熟」,則是通過違規收集個人信息並進行分析做到的,由於這些互聯網公司處於壟斷地位,用戶對於這種企業的應用違規收集信息也是無可奈何。
所以手機個人信息的保護,不但需要相關企業的自律,而且需要構建完整的個人信息法律保護體系。