0

в моем приложении Я хочу добавить опцию: поместить телефон в бесшумный режим, когда вызывается группа конкретных номеров (я использую базу данных позже для этого, теперь попробуйте с номером)вернуться в предыдущий режим после завершения вызова в android

вот мой код:

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; 

ответ

0

Попробуйте

if ((phoneNumber != null) && (phoneNumber.equals(silentNum))){ 
     am.setRingerMode(0); 
     } 
else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals 
        (TelephonyManager.EXTRA_STATE_IDLE)) { 
       // This code will execute when the call's disconnected 
       Toast.makeText(context, "You Hang up", 
         Toast.LENGTH_SHORT).show(); 
       AudioManager maudio = (AudioManager) context. 
         getSystemService(context.AUDIO_SERVICE); 
       maudio.setRingerMode 
         (AudioManager.RINGER_MODE_NORMAL); 

      } 

 Смежные вопросы

  • Нет связанных вопросов^_^