0

特定の番号でサイレント モードで鳴るアプリを作成しています。着信をリッスンして特定の番号を鳴らすブロードキャスト リスナーを作成しました。私が直面している問題は、インストール後初めて機能せず、その後は完全に機能することです。

私が使用しているコードは

    public class Ring extends BroadcastReceiver{
private Context context;
private String PhoneNumber;
private int ringerMode=0;
String state=null;
Bundle bundle=null;

@Override
public void onReceive(Context context, Intent intent) {
 AudioManager maudio=(AudioManager)context.getSystemService(context.AUDIO_SERVICE);
  bundle = intent.getExtras();
  this.context = context;

  if(null == bundle)
          return;

  state = bundle.getString(TelephonyManager.EXTRA_STATE);

  if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))
  {
          check();
          PhoneNumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
          if(PhoneNumber.equals("+918281306132"))
          makeitNormal();
          maudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
  }
  if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_OFFHOOK))
  {
      makeItSilent();
  }

  if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_IDLE))
  {
      makeItSilent();
  }
}

private void check() {
  // TODO Auto-generated method stub
  AudioManager maudio=(AudioManager)context.getSystemService(context.AUDIO_SERVICE);
  ringerMode=maudio.getRingerMode();

}

 private void makeitNormal() {
 // TODO Auto-generated method stub

   AudioManager maudio=(AudioManager)context.getSystemService(context.AUDIO_SERVICE);
   maudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
 }


 private void makeItSilent() {
 // TODO Auto-generated method stub
 AudioManager maudio=(AudioManager)context.getSystemService(context.AUDIO_SERVICE);
  int ringer=maudio.getRingerMode();
  if (ringerMode==AudioManager.RINGER_MODE_SILENT){

  maudio.setRingerMode(AudioManager.RINGER_MODE_SILENT);

  }else if(ringerMode==AudioManager.RINGER_MODE_NORMAL){
  maudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
 }
 else if(ringerMode==AudioManager.RINGER_MODE_VIBRATE){
  maudio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
 }

 }

 public void onAccuracyChanged(Sensor arg0, int arg1) {
 // TODO Auto-generated method stub

}

public void onSensorChanged(SensorEvent event) {
 // TODO Auto-generated method stub

} }

4

1 に答える 1

0

私の頭に浮かんだ唯一の考えは、 のcheck()外でメソッドを呼び出し、トリガーされる前にフィールドonReceive()を設定することです。ringerModeonRecieve()

于 2013-02-05T12:32:48.480 に答える