如何更改android手机的铃声状态?

如何更改android手机的铃声状态?,android,Android,我试图在任何通话结束时使手机静音,为此我使用audiomanager对象。当我在位置1写入setRingerMode时,它工作,但在位置2它不工作。它的内部广播接收器。这是我的密码: public void onReceive(Context context, Intent intent) { AudioManager am= (AudioManager)context.getApplicationContext().getSystemService(Conte

我试图在任何通话结束时使手机静音,为此我使用audiomanager对象。当我在位置1写入setRingerMode时,它工作,但在位置2它不工作。它的内部广播接收器。这是我的密码:

public void onReceive(Context context, Intent intent)
    {   


        AudioManager am= (AudioManager)context.getApplicationContext().getSystemService(Context.AUDIO_SERVICE);

        //POSITION 1    am.setRingerMode(AudioManager.RINGER_MODE_SILENT);


        Bundle myBundle = intent.getExtras();
        if (myBundle != null)
        {
          System.out.println("--------Not null-----");
            try 
            {
                if (intent.getAction().equals("android.intent.action.PHONE_STATE")) 
                { 
                    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);


                    if (state.equals(TelephonyManager.EXTRA_STATE_RINGING))
                    { 

                           //code...
                    }
                    else if (state1.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))
                    {   
                           //POSITION 2
                                am.setRingerMode(AudioManager.RINGER_MODE_SILENT);

                    }
              }

         }
            catch (Exception ex) 
            { // Many things can go wrong with reflection calls
                ex.printStackTrace();
            }
        }
}

根据android文档-

设备调用状态:摘机。至少存在一个调用是 拨号、活动或保留,并且没有电话正在响铃或等待


如果您想在通话结束后进行设置,请使用
EXTRA_STATE\u IDLE
,并且在代码中您已经在
if
语句中使用了
state1
变量,并且您已经声明并使用了
STATE
变量

那么,当接收到调用时,使用什么offhook for.offhook,当结束调用时使用idle,为什么要使用if(intent.getAction().equals(“android.intent.action.PHONE_STATE”)?如果您已在清单中注册了广播接收器,则无需再次检查