簡體   English   中英

如何避免使用對話框讀取聯系人或撥打電話的完整操作

[英]How to avoid complete action using dialog to read a contact or to do a call phone

在我的應用程序中,我有一個用於從通訊錄電話中選擇聯系人的按鈕,以及一個用於啟動該號碼的通話電話的按鈕。 因此,當我單擊按鈕以選擇聯系人時,出現使用對話框的完整操作以及更多應用程序可供選擇,以及當我單擊按鈕以為通話電話加注星標時。 如何避免對話框訪問聯系人和直接撥打電話?

我的活動的部分代碼:

contacts.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_PICK,  ContactsContract.Contacts.CONTENT_URI);
            startActivityForResult(intent, 0);
        }
});

start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {   
String numeroDiTelefono = dati.getString("numeroDiTelefono");
    Intent callIntent = new Intent(Intent.ACTION_CALL);
    callIntent.setData(Uri.parse("tel:" + numeroDiTelefono));
    callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(callIntent);
        }
});

確保已在Manifest文件中添加了權限:

<uses-permission android:name="android.permission.CALL_PHONE" />

而您所需的Intent就是:

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+numeroDiTelefono));
startActivity(callIntent);

基本上,該對話框意味着您的手機上安裝了多個聯系人應用程序。 當您調用任何常見的Intent操作時,這是Android系統的默認行為。

您可以做的是使意圖更加特定於您要尋找的應用程序。 通過指定a)特定數據uri b)包名稱c)設置內容類型等

也嘗試一下。

Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(i, PICK_CONTACT);
public void onClick(View view) {
            String number = String.valueOf(bundle.getLong("phone"));
            Uri call = Uri.parse("tel:" + number);
            Intent intent = new Intent(Intent.ACTION_DIAL, call);
            startActivity(intent);
        }

暫無
暫無

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

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