gpt4 book ai didi

java - 各种手机状态区分

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:03 25 4
gpt4 key购买 nike

如何区分来电和去电?对于这两种情况,移动设备均处于摘机状态,但对于来电,移动设备处于振铃状态,然后进入摘机状态,

我尝试了这段代码,但它没有有效工作,因为振铃变量总是错误的。还有另一个问题我怎样才能获得去电号码..提前致谢

public class states extends BroadcastReceiver {
boolean Ringing = false;

public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)) {
Toast.makeText(context, "Ringing", Toast.LENGTH_SHORT).show();
Ringing = true ;
}
else if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
if (Ringing) {
// do nothing
}else{
// do something
}
else if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_IDLE)) {
Ringing = false ;
}
}
}

这些是我的权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />


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

最佳答案

为了区分传入和传出调用,您可以使用广播接收器:添加<action android:name="android.intent.action.NEW_OUTGOING_CALL" />在您的接收器中并在 onReceive() 方法中处理它。

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

用于获取拨出号码

public void onReceive(Context context, Intent intent)
{
String state=intent.getStringExtra(TelephonyManager.EXTRA_STATE);

if(state==null)
{
//Outgoing call
String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.i("tag","Outgoing number : "+number);
}
else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING))
{
//Incoming call
String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.i("tag","Incoming number : "+number);
}
}

关于java - 各种手机状态区分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44904163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com