0

私のアプリでは、オプションを追加したい:特定の番号のグループが電話をかけたときに電話をサイレントモードにする(後でデータベースを使用して番号を試す)

ここに私のコードがあります:

public class PhoneCallReceiver extends BroadcastReceiver {
 Context context = null;
 private static final String TAG = "Phone call";
 private ITelephony  telephonyService;

 private String silentNum="+.....";
 AudioManager am,temp;

 @Override
 public void onReceive(Context context, Intent intent) {
  Log.v(TAG, "Receving....");
  TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);  
  try {
      am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
      temp = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
      temp.getRingerMode();

   Class c = Class.forName(telephony.getClass().getName());
   Method m = c.getDeclaredMethod("getITelephony");
   m.setAccessible(true);
   telephonyService = (ITelephony) m.invoke(telephony);
   Bundle bundle=intent.getExtras();
   String phoneNumber = bundle.getString("incoming_number");
   db= new dbhandler(context);
   db.open();
   int ch = db.checkexist("call", phoneNumber, "1");
   if ((phoneNumber != null) && (ch==1)){
   //telephonyService.silenceRinger();
   telephonyService.endCall();
   Log.e("HANG UP", phoneNumber);
   }

   if ((phoneNumber != null) && (phoneNumber.equals(silentNum))){
       am.setRingerMode(0);
       }

       }

  } catch (Exception e) {
   e.printStackTrace();
  }

 }

また、BroadcastReceiver もマニフェストに追加しました。これらの番号のいずれかが電話をかけると、電話はサイレント モードになります。私の問題は、電話を以前のモードに戻す方法がわからないことです。通話がいつ終了するのかわからない

これは前のモードに戻るための正しいコードですか?

どこに置けばいいですか?

   switch (temp.getRingerMode()) {
   case AudioManager.RINGER_MODE_SILENT:
   Log.i("MyApp","Silent mode");
   break;
   case AudioManager.RINGER_MODE_VIBRATE:
   Log.i("MyApp","Vibrate mode");
   break;
   case AudioManager.RINGER_MODE_NORMAL:
   Log.i("MyApp","Normal mode");
   break;
4

1 に答える 1