2016-04-07 13 views
0

配列の中のいくつかの番号を呼び出したい。だから私はそれらをLoopに入れ、コールアプリの意図で始めた。 phonecalllistenerを使用すると、コールが終了したときに私のアクティビティに戻りますが、私の問題はループが開始から再開して、ボタンをもう一度クリックしなければならないことです。電話番号のリストを呼び出してアクティビティに戻る

この問題はバンドルで解決できますか?そしてどうやって? アクティビティの再起動時にループステートを保存するにはどうすればよいですか?

私もすべき最初の数でstartActivityForResult(テントの意図、int型のrequestCode)を呼び出し、あなたのボタンクリックリスナーから

public class MainActivity extends Activity { 

final Context context = this; 

private Button button; 
public int g = 0; 
public String[] nummern = new String[10]; 


public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.buttonCall); 
    nummern[0] = "tel:06746468156"; 
    nummern[1] = "tel:06991046460"; 
    nummern[2] = "tel:06504146464"; 

    PhoneCallListener phoneListener = new PhoneCallListener(); 
    TelephonyManager telephonyManager = (TelephonyManager) this 
      .getSystemService(Context.TELEPHONY_SERVICE); 
    telephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); 

    // add button listener 
    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
       for (g = 0; g <= nummern.length-1; g++) { 

        Intent callIntent = new Intent(Intent.ACTION_CALL); 

        callIntent.setData(Uri.parse(nummern[g])); 
        startActivity(callIntent); 

       } 


     } 

    }); 

} 

private class PhoneCallListener extends PhoneStateListener { 

    private boolean isPhoneCalling = false; 

    String LOG_TAG = "LOGGING 123"; 


    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 

     if (TelephonyManager.CALL_STATE_RINGING == state) { 
      // phone ringing 
      Log.i(LOG_TAG, "RINGING, number: " + incomingNumber); 
     } 

     if (TelephonyManager.CALL_STATE_OFFHOOK == state) { 
      // active 
      Log.i(LOG_TAG, "OFFHOOK"); 

      isPhoneCalling = true; 
     } 

     if (TelephonyManager.CALL_STATE_IDLE == state) { 
      // run when class initial and phone call ended, 
      // need detect flag from CALL_STATE_OFFHOOK 
      Log.i(LOG_TAG, "IDLE"); 

      if (isPhoneCalling) { 

       Log.i(LOG_TAG, "restart app"); 

       // restart app 
       Intent i = getBaseContext().getPackageManager() 
         .getLaunchIntentForPackage(
           getBaseContext().getPackageName()); 
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(i); 

       isPhoneCalling = false; 
      } 

     } 
    } 
} 

}

+0

ループ状態、またはどの電話番号が呼び出されたかを保存します –

+0

アクティビティの再起動時にループ状態を保存するにはどうすればよいですか? – Marco

+0

コードを正しく理解していれば、通話終了後にアプリを再起動しますか?あなたはなぜこれをやっているのですか ?アプリを再起動するのではなく、そこから次の番号を呼び出すことができます – JonasCz

答えて

0

をマニフェスト(CALL_PHONEとREAD_PHONE_STATE)の右権限を書かれています"onActivityResult(int requestCode、int resultCode、Intent data)"メソッドが呼び出され、このメソッドからアクティビティを再開することができます。それに応じてロジックを適用することができます。

関連する問題