当前位置:编程学习 > wap >>

关于监听小米手机来电、去电的问题,请高人指点。

代码如下: 
<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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,