[英]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.