編輯:關於Android編程
TelephonyManager是一個管理手機通話狀態、電話網絡信息的服務類,該類提供了大量的getXxx(),方法獲取電話網絡的相關信息。關於TelephonyManager的詳解可以參照:Android開發之獲取手機SIM卡信息
程序運行結果:
log_phone文件:
應用實例:<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPGhyPgo8cD48L3A+CjxwcmUgY2xhc3M9"brush:java;">package com.jph.monitorphone;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
/**
* Describe:
* 監視手機來電
* 本實例實現了監視當前手機的來電狀態,
* 並將來電與接聽紀錄寫入log_phone文件中
* @author jph
* Date:2014.07.22
* */
public class MonitorPhone extends Activity {
TelephonyManager tManager;
private String incomingNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//獲取系統的TelephonyManager對象
tManager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//創建一個通話狀態監聽器
PhoneStateListener pListener=new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String number) {
// TODO Auto-generated method stub
switch (state) {
case TelephonyManager.CALL_STATE_IDLE://無任何狀態
break;
case TelephonyManager.CALL_STATE_OFFHOOK://接聽來電
writeFile(state,number);
break;
case TelephonyManager.CALL_STATE_RINGING://來電
incomingNumber=number;
writeFile(state,number);
break;
default:
break;
}
super.onCallStateChanged(state, incomingNumber);
}
};
//為tManager添加監聽器
tManager.listen(pListener, PhoneStateListener.LISTEN_CALL_STATE);
}
//將接聽電話,與來電信息寫入到文件
protected void writeFile(int state, String number) {
// TODO Auto-generated method stub
StringBuffer sb=new StringBuffer();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh.mm.ss");
sb.append("時間:"+sdf.format(new Date())+"\n");
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK://接聽來電
sb.append("接聽了電話號為:"+incomingNumber+"的電話");
break;
case TelephonyManager.CALL_STATE_RINGING://來電
sb.append(number+"來電");
break;
}
sb.append("\n-----------------------\n");
FileOutputStream fos=null;
try {
//以追加的方式打開輸出流
fos=openFileOutput("log_phone", MODE_APPEND);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//將輸出流封裝成PrintStream對象
PrintStream ps=new PrintStream(fos);
//輸入文件內容
ps.println(sb.toString());
//關閉輸出流
ps.close();
}
}
AndroidManifest.xml 實例分析: 本應用是通過Activity實現的,如果把實例中的代碼放到後台執行的Service中運行,並設置Service組件跟隨系統啟動,那個這種監聽就可以做到“神不知,鬼不覺”了。嘿嘿.............
最後別忘為應用添加相應的權限:
錯誤信息Trying to load lib /data/data/com.sohu.inputmethod.sogou/files/.dict/sogou
在我們開發應用程序時,通常都會用到獲取手機聯系人信息這一十分常用的功能,最近項目裡也要實現此功能,想到以後的APP還十分可能還有此功能,就干脆把這個小功能放到一個類中去,
android關閉日志 我們在開發時,經常會輸出各種日志來debug代碼。但是等到應用發布的apk運行時不希望它輸出日志。 關閉輸出日志Log.v()
目前幾乎所有的APP在用戶注冊時都會有設置頭像的需求,大致分為三種情況:(1)通過獲取本地相冊的圖片,經過裁剪後作為頭像。(2)通過啟動手機相機,現拍圖片然後裁剪作為頭像