簡體   English   中英

如何在Android中獲得最后一個撥出電話

[英]How to get last outgoing call in Android

我正在使用一個使用 Android Intent 類進行調用的應用程序。

我可以成功創建一個號碼的呼叫,以便正常工作。

我現在想要的是顯示要在 TextView 中顯示的最后一個撥出電話號碼。 我還使 TextView 可點擊,因此通過點擊我可以重撥號碼。

我正在使用 CallLog.Calls.getLastOutgoingCall(getApplicationContext()); 獲取最后一個被叫號碼。 這在我的應用程序中只適用一次。

我啟動應用程序,輸入一個號碼並撥打電話。 我在 TextView 中設置的第一個外呼號碼。 從那以后,我進入這是成功的TextView中設置了第二個數字,但是當我點擊重撥應用程序調用的第一個數字!

這是為什么? 我的最后一個傳出號碼是第二個。 為什么叫第一個號碼?

此外,如果我重新啟動應用程序,它會重撥第二個撥出號碼。

這是我的代碼:

public class MainActivity extends ActionBarActivity {

Button btnCall;
TextView number;
EditText calledNumber;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnCall = (Button) findViewById(R.id.button);
    number = (TextView) findViewById(R.id.textView2);
    calledNumber = (EditText) findViewById(R.id.editText);

    //Gets the last outgoing number from the call log
    final String lastCalledNumber = CallLog.Calls.getLastOutgoingCall(getApplicationContext());

    btnCall.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String TheNumber = calledNumber.getText().toString();
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:" + TheNumber));
            startActivity(callIntent);
            number.setText(TheNumber);
        }
    });

    //redial number in TextView by click
    number.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent call = new Intent(Intent.ACTION_CALL);
            call.setData(Uri.parse("tel:" + lastCalledNumber));
            startActivity(call);
        }
    });
}

}

根據活動生命周期onCreate()僅調用一次,並且不會在您的應用每次出現時運行 - 這意味着您的getLastOutgoingCall()第一次是正確的,但第二次不一定有效。

如果你想在每次活動出現時運行一​​些東西,你應該把它移到onResume() - 這確保它總是最新的:

String lastCalledNumber;

@Override
protected void onCreate(Bundle savedInstanceState) {
     // Same except without the `getLastOutgoingCall()`
}

@Override
public void onResume() {
    lastCalledNumber = CallLog.Calls.getLastOutgoingCall(this);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM