安卓怎么获取来电号码

825609451 2013-10-19 05:02:43
求。。。。。。。。。。。。。。。。。。
...全文
319 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzl19901027 2013-10-22
  • 打赏
  • 举报
回复
楼主的需求很简单,只要求获取来电号码,没有其他操作……

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import android.app.Service;
import android.telephony.TelephonyManager;
import java.lang.reflect.Method;
import android.widget.Toast;


public class PhoneListen extends BroadcastReceiver{

    private static boolean mIncomingFlag = false;
    private static String mIncomingNumber = null;

    @Override
    public void onReceive(Context context, Intent intent) {
        //Dial number;
        if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
            ;//这个是拨号的时候采用的到的,所以这里没用
        } else {
            //Get call;
            TelephonyManager tManager = (TelephonyManager) context
                    .getSystemService(Service.TELEPHONY_SERVICE);
            switch (tManager.getCallState()) {
                //有电话打进来
                case TelephonyManager.CALL_STATE_RINGING:
                    //mIncomingNumber就是来电号码
                    mIncomingNumber = intent.getStringExtra("incoming_number");
                    Toast.makeText(context, mIncomingNumber,
                            Toast.LENGTH_LONG).show();

               

                    break;
               default:break;
            }
        }
    }

}

Kuai_jia_long 2013-10-22
  • 打赏
  • 举报
回复
因为android没有直接挂断电话的API,所以需要导入两个AIDL包: android.telephony和com.android.internal.telephony 下面代码中的number就是呼入的号码 TelephonyManager telephone = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); PhoneStateListener listener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String number) { if("关闭".equals(check)){ switch (state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK: break; case TelephonyManager.CALL_STATE_RINGING: break; } }else{ if ("静音".equals(phone)) { switch (state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK: break; case TelephonyManager.CALL_STATE_RINGING: break; } }else if ("和谐模式".equals(phone)) { switch (state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK: break; case TelephonyManager.CALL_STATE_RINGING: try { Method method = Class.forName( "android.os.ServiceManager").getMethod( "getService", String.class); IBinder binder = (IBinder) method.invoke(null, new Object[] { TELEPHONY_SERVICE }); ITelephony telephony = ITelephony.Stub .asInterface(binder); telephony.endCall(); } catch (Exception e) { e.printStackTrace(); } break; } }else{ switch (state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK: break; case TelephonyManager.CALL_STATE_RINGING: try { Method method = Class.forName( "android.os.ServiceManager").getMethod( "getService", String.class); IBinder binder = (IBinder) method.invoke(null, new Object[] { TELEPHONY_SERVICE }); ITelephony telephony = ITelephony.Stub .asInterface(binder); telephony.endCall(); } catch (Exception e) { e.printStackTrace(); } listNum = (List<PersonNumber>) dbHelper .findAllNumber(PersonNumber.TABLENAME); for (int i = 0; i < listNum.size(); i++) { if (listNum.get(i).getNumber().equals(number)) { String time = sdf.format(new Date()); blackNumber = new PhoneBlackNumber(listNum .get(i).getNumber(), "未知", time); dbHelper.insertPersonNumber(blackNumber); Intent intt = new Intent(); intt.setAction(PhoneReceiver.PHONE_RECEIVER_ACTION); sendBroadcast(intt); } } break; } } } super.onCallStateChanged(state, number); } }; telephone.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
tantahe 2013-10-19
  • 打赏
  • 举报
回复
Android来电号码获取代码 Manifest里要加这个权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧