关于监听小米手机来电、去电的问题,请高人指点。
代码如下:<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<receiver android:name="com.guanxf.haha.newsreader.listener.PhoneStatReceiverListener">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
Java:
public class PhoneStatReceiverListener extends BroadcastReceiver{
private static final String TAG = "PhoneStatReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "action"+intent.getAction());
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
Log.i(TAG, "去电");
}else{
Log.i(TAG, "来电");
TelephonyManager telManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telManager.listen(new TelListener(context), PhoneStateListener.LISTEN_CALL_STATE);
}
}
private class TelListener extends PhoneStateListener{
Context context;
public TelListener(Context context) {
this.context = context;
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
try{
switch (state) {
case TelephonyManager.CALL_STATE_IDLE: //无任何状态时
Log.i(TAG,"没有反应");
orderRondom(context);
break;
case TelephonyManager.CALL_STATE_OFFHOOK: //接起电话时
Log.i(TAG,"接电话时");
orderRondom(context);
break;
case TelephonyManager.CALL_STATE_RINGING: //电话进来时
Log.i(TAG,"电话进来时");
break;
default:
break;
}
}catch (Exception e) {
e.printStackTrace();
}
super.onCallStateChanged(state, incomingNumber);
}
}
private void orderRondom(Context mContext) {
Log.i("kgTag", "value");
} --------------------编程问答-------------------- --------------------编程问答-------------------- 程序应该没问题,是小米手机的问题,我的手机也是小米的,同样监听不到。我换了一个手机,就是好的。 --------------------编程问答-------------------- 你把权限打开了么?
小米可以设置权限的, --------------------编程问答-------------------- 一句话:在小米手机上很多功能都被屏蔽或阉割 --------------------编程问答-------------------- 恩恩对的
权限怎么打开呢
补充:移动开发 , Android