如何获取来电号码?[安卓]

Fra*_*cci 1 android broadcastreceiver user-permissions

我正在尝试使用 Android 获取来电号码,但它返回 null。

我在清单中添加用户权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<receiver android:name=".ServiceReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

并使用这个类:

public class ServiceReceiver extends BroadcastReceiver {

@Override
public void onReceive(final Context context, Intent intent) {
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(new PhoneStateListener(){
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        super.onCallStateChanged(state, incomingNumber);
        System.out.println("incomingNumber : "+incomingNumber);
    }
 },PhoneStateListener.LISTEN_CALL_STATE);
}
Run Code Online (Sandbox Code Playgroud)

但不起作用,有什么想法吗?

Côn*_*Hải 5

READ_CALL_LOG请注意,如果您想获得,您需要获得许可,您可以在此处incomingNumber查看文件

字符串:呼叫电话号码。如果应用程序没有 READ_CALL_LOG 权限或运营商权限(请参阅 TelephonyManager#hasCarrierPrivileges),则将传递一个空字符串作为参数。