[英]Answer the call automatically in android (Marshmallow)
在我的項目中,我必須使用棉花糖自動接聽電話。 我提到了互聯網,但仍然沒有解決方案
這是代碼:
public void acceptCall() {
Toast.makeText(context,"inside accept call",Toast.LENGTH_LONG).show();
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonUp.putExtra(Intent.EXTRA_KEY_EVENT,
new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
context.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED");
}
清單中的權限:
我也已經完成了棉花糖的運行時權限。
我在哪里做錯了?
首先,在執行任何操作之前,請請求call_phone的許可。 為了安全起見。 (別忘了將此權限放在清單中)
<uses-permission android:name="android.permission.CALL_PHONE" />
和用於檢查的Java代碼將如下所示:
int checkPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);
if (checkPermission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this,
new String[]{Manifest.permission.CALL_PHONE},
REQUEST_CALL_PHONE);
} else {
customDialog(CallChoosyActivity.this);
}
您需要使用電話管理器收聽來電,您可以從此處了解更多信息
public void onReceive(final Context context, Intent intent)
{
TelephonyManager telephonyManager = null;
PhoneStateListener listener = new PhoneStateListener()
{
public void onCallStateChanged(int state, String incomingNumber)
{
switch (state)
{
case TelephonyManager.CALL_STATE_IDLE:
// call ended
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// call picked
break;
case TelephonyManager.CALL_STATE_RINGING:
// call is ringing now
try {
telephonyManager.getClass().getMethod("answerRingingCall").invoke(telephonyManager);
} catch (Exception e) {
}
break;
}
}
};
// Register the listener with the telephony manager
telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.