1

我是 Android 编程新手,我打算创建一个应用程序来显示联系人并从中调用。

我已经通过列表视图显示了我的联系人,我想要做的是,当我点击某个联系人时,它会弹出到我的编辑文本中,然后我会点击我的通话按钮。(如图所示)联系人和编辑文本的屏幕截图

更新带有通话按钮的屏幕截图

有什么办法吗?

activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/idLayout">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="20dp"
        android:text="@string/idContacts"
        android:textAlignment="center"
        android:textSize="15pt" />

    <EditText
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="51dp"
        android:layout_marginBottom="10dp"
        android:inputType=""
        android:labelFor="@+id/number"
        android:textSize="25sp" />

    <Button
        android:id="@+id/callBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:text="Call" />

    <ListView
        android:id="@+id/idList"
        android:layout_width="400dp"
        android:layout_height="188dp"></ListView>

</LinearLayout>

这是我的 MainActivity.java

package com.example.spyk.testmessageandcall;

import android.Manifest;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {

    ListView listview;
    EditText numberTxt;
    private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 100;
    Cursor c;
    ArrayList<String> contacts;


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

        listview = (ListView) findViewById(R.id.idList);

        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS);

        if (permissionCheck == PackageManager.PERMISSION_GRANTED){
            showContacts();
        }
        else{
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.READ_CONTACTS},
                    PERMISSIONS_REQUEST_READ_CONTACTS);
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_list_item_1,contacts);
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            }
        });
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                           int[] grantResults){
        if(requestCode == PERMISSIONS_REQUEST_READ_CONTACTS){
            if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                showContacts();
            }
            else{
                Toast.makeText(this, "Names will display if you grant permission", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void showContacts(){
        c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null, ContactsContract.Contacts.DISPLAY_NAME + " ASC ");

        contacts = new ArrayList<String>();
        while (c.moveToNext()){

            String contactName = c.getString(c.getColumnIndex( ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String phNumber = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            contacts.add("Name: "+contactName + "\n" + "Phone #: " +phNumber);
        }
        c.close();
    }

}

编辑

我需要的是当我点击一个联系人时,只有它的号码会出现在编辑文本上,这里是它的变量:

phNumber,电话号码的变量

4

1 回答 1

1

只需在 onItemClick 中输入即可更改 editText 的文本

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
             String[] splits = contacts.get(i).split(":");

             numberTxt.setText(splits[splits.length-1])
        }
    });

并为调用按钮单击使用此

startActivity(new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", numberTxt.getText().toString(), null)));
于 2018-06-27T10:50:11.083 回答