得到所有Android版本的来电电话号码 [英] Get phone number of incoming call in all android versions

查看:692
本文介绍了得到所有Android版本的来电电话号码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图获取来电的来电号码。我搜索,发现这个
<一href=\"http://stackoverflow.com/questions/1853220/retrieve-incoming-calls-phone-number-in-android\">Retrieve在Android的来电的电话号码。
我的问题是,我没能来电号码,在以上版本4.0.3。
请指导我,如果我做错什么,或者如何让来电号码在上面的版本4.0.3。
提前致谢。
这里是code:

  TelephonyManager电话=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(新PhoneStateListener(){
   公共无效onCallStateChanged(INT状态,弦乐incomingNumber){
       super.onCallStateChanged(州,incomingNumber);
          开关(州){
              在Android的最新版本//没有得到来电号码
              Log.e(Utils.TAGincomingNumber:+ incomingNumber);
          }
    }
},PhoneStateListener.LISTEN_CALL_STATE);


解决方案

在您的清单中创建一个接收器:

 &lt;接收机器人:名字=。PhoneState&GT;
    &所述;意图滤光器&gt;
         &lt;作用机器人:名字=android.intent.action.PHONE_STATE/&GT;
    &所述; /意图滤光器&gt;
&LT; /接收器&GT;

添加此权限:

 &LT;使用许可权的android:NAME =android.permission.READ_PHONE_STATE/&GT;

创建广播接收器:

 公共类PhoneState扩展广播接收器{    @覆盖
    公共无效的onReceive(上下文的背景下,意图意图){        TelephonyManager TM =(TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);        开关(tm.getCallState()){            案例TelephonyManager.CALL_STATE_RINGING:
                    串phoneNr = intent.getStringExtra(incoming_number);
                    Toast.makeText(上下文,phoneNr,Toast.LENGTH_LONG).show();
                    打破;
        }
    }
}

I am trying to fetch incoming number of incoming call. I searched and found this Retrieve incoming call's phone number in Android. My issue is that I am not able to "incoming number" in version above 4.0.3. Please guide me if I am doing anything wrong ,or how to get the incoming number in version above 4.0.3. Thanks in advance. Here is code :

TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(new PhoneStateListener(){
   public void onCallStateChanged(int state, String incomingNumber) {
       super.onCallStateChanged(state, incomingNumber);
          switch (state) {
              // not getting incoming number in latest version of android
              Log.e(Utils.TAG, "incomingNumber: "+incomingNumber);
          }
    }
},PhoneStateListener.LISTEN_CALL_STATE);

解决方案

Create a receiver in your manifest:

<receiver android:name=".PhoneState">  
    <intent-filter>
         <action android:name="android.intent.action.PHONE_STATE"/> 
    </intent-filter>
</receiver>

add this permission:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

create the broadcast receiver:

public class PhoneState extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE); 

        switch (tm.getCallState()) {

            case TelephonyManager.CALL_STATE_RINGING:
                    String phoneNr= intent.getStringExtra("incoming_number");
                    Toast.makeText(context, phoneNr,Toast.LENGTH_LONG).show();
                    break;
        } 
    }
}

这篇关于得到所有Android版本的来电电话号码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆