[英]Getting RESULT_CANCELED for Dialer Intent
我正在嘗試使用startActivityForResult()
獲取撥號器 Intent 的結果
下面是我的撥號器意圖代碼。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:123456789"));
startActivityForResult(intent, 1234);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1234){
if (resultCode == Activity.RESULT_OK){
Toast.makeText(getApplicationContext(), "result ok", Toast.LENGTH_LONG).show();
}else if (resultCode == Activity.RESULT_CANCELED){
Toast.makeText(getApplicationContext(), "Result Cancelled", Toast.LENGTH_LONG).show();
}
}
}
每當我返回我的活動時,都會觸發 Result Canceled Toast。
提前致謝。
為什么我得到 RESULT_CANCELED 而不是 RESULT_OK。
ACTION_DIAL
不返回結果。 如果您閱讀ACTION_DIAL
的文檔,您將看到“輸出:無”。 因此,您通常會得到RESULT_CANCELED
。 只有設計用於startActivityForResult()
的活動才會返回結果代碼。
來自文檔:
ACTION_DIAL
public static final String ACTION_DIAL
你只有ACTION
。 如果你想從你的應用程序中調用一個號碼,那么你只需將這些代碼行放入onClick()
方法中就可以得到你想要的:
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:123456789"));
startActivity(intent); // no need to use startActivityResult(intent,1234)
此處,如果ACTION_DIAL輸入為空,則啟動空撥號器; 否則getData()
是要撥打的電話號碼的 URI 或明確電話號碼的tel: <yourURI>
。 此外,沒有RESULT_OK
或RESULT_CANCELED
的“輸出”,因為startActivityResult()
對ACTION_DIAL
沒有任何意義,而是startActivity(intent)
。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.