私はアンドロイドで着信をブロックすることができますが、時間の切断前に数秒の間鳴る問題があります。単一の呼び出し音を鳴らさずに電話を直接切断するにはどうすればよいですか?
Manifest
ファイルに権限を追加しました:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-feature android:name="android.hardware.telephony" />
次に IDL
、コアテレフォニーサービスを取得するためのインターフェイスを作成します。
package com.android.internal.telephony;
interface ITelephony {
boolean endCall();
void answerRingingCall();
void silenceRinger();
}
次に、着信用のブロードキャストレシーバーを作成しました。
public class PhonecallReceiver extends BroadcastReceiver {
Context context = null;
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Receving call...");
TelephonyManager telephony = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService = (ITelephony) m.invoke(telephony);
Bundle b = intent.getExtras();
String incommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
telephonyService.endCall();
}catch (Exception e){ e.printStackTrace();
}}