给楼主个例子吧。// This file is PhoneCallActivity.java
package com.androidbook.phonecall.demo;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.widget.TextView;public class PhoneCallActivity extends Activity {
private TextView tv = null;
private String logText = "";
private TelephonyManager teleMgr = null;
private MyPhoneStateListener myListener = null; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.textView); teleMgr =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
myListener = new MyPhoneStateListener();
}
@Override
public void onResume() {
super.onResume();
Log.d("PhoneCallDemo", "In onResume");
teleMgr.listen(myListener, PhoneStateListener.LISTEN_CALL_STATE);
}
@Override
public void onPause() {
super.onPause();
Log.d("PhoneCallDemo", "In onPause");
teleMgr.listen(myListener, PhoneStateListener.LISTEN_NONE);
}
public void doClick(View target) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:5551212"));
startActivity(intent);
}
public class MyPhoneStateListener extends PhoneStateListener
{
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber); switch(state)
{
case TelephonyManager.CALL_STATE_IDLE:
logText = "call state idle...incoming number is["+
incomingNumber+"]\n" + logText;
break;
case TelephonyManager.CALL_STATE_RINGING:
logText = "call state ringing...incoming number is["+
incomingNumber+"]\n" + logText;
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
logText = "call state Offhook...incoming number is["+
incomingNumber+"]\n" + logText;
break;
default:
logText = "call state ["+state+"]incoming number is["+
incomingNumber+"]\n" + logText;
break;
}
tv.setText(logText);
}
}
}
package com.androidbook.phonecall.demo;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.widget.TextView;public class PhoneCallActivity extends Activity {
private TextView tv = null;
private String logText = "";
private TelephonyManager teleMgr = null;
private MyPhoneStateListener myListener = null; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.textView); teleMgr =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
myListener = new MyPhoneStateListener();
}
@Override
public void onResume() {
super.onResume();
Log.d("PhoneCallDemo", "In onResume");
teleMgr.listen(myListener, PhoneStateListener.LISTEN_CALL_STATE);
}
@Override
public void onPause() {
super.onPause();
Log.d("PhoneCallDemo", "In onPause");
teleMgr.listen(myListener, PhoneStateListener.LISTEN_NONE);
}
public void doClick(View target) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:5551212"));
startActivity(intent);
}
public class MyPhoneStateListener extends PhoneStateListener
{
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber); switch(state)
{
case TelephonyManager.CALL_STATE_IDLE:
logText = "call state idle...incoming number is["+
incomingNumber+"]\n" + logText;
break;
case TelephonyManager.CALL_STATE_RINGING:
logText = "call state ringing...incoming number is["+
incomingNumber+"]\n" + logText;
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
logText = "call state Offhook...incoming number is["+
incomingNumber+"]\n" + logText;
break;
default:
logText = "call state ["+state+"]incoming number is["+
incomingNumber+"]\n" + logText;
break;
}
tv.setText(logText);
}
}
}
解决方案 »
- android camera开发Method called after release()问题
- android开发交流,电子书程序
- 你知道怎么导入 com.android.mms.R吗?
- 新手问题
- 关于Content.View的问题
- android手机软件开发
- android 如何原样显示word文件里面的内容(表格,自选图形,图片,页眉,页脚)
- 为什么我写的android音乐播放器,会意外停止????
- ListView中如何获得选中行中的TextView值
- 我用instrumentation模拟按键,怎么可以模拟back,不能模拟home
- 关于一种设计思路的问题????
- Android代码里如何动态生成控件数组啊?
我现在项目中 就是按照这样的方法来实现,但是在一些电信定制android手机上是无法获得incomingNumber。
这个问题只是在部分电信定制机上出现过。其他类型的android手机还没发现过这种情况
这种方法我也试过,但是有的手机log日志里面有,有的是没有的。
-> Phone(CdmaPhone).notifyPhoneStateChnaged()
-> PhoneNotifier(DefaultPhoneNotifier).notifyPhoneState()
-> registry(ITelephonyRegistry).notifyCallState()
(Phone)RPC
-->TelephonyRegistry.notifyCallState()
(TelephonyRegistry in system_server)
callback(IPhoneStateListner).onCallStateChanged()RPC
-->PhoneStateListner.onCallStateChanged()
(youApp)