Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获得联系人姓名和号码后如何使用intent拨打电话_Java_Android_Kotlin - Fatal编程技术网

Java 获得联系人姓名和号码后如何使用intent拨打电话

Java 获得联系人姓名和号码后如何使用intent拨打电话,java,android,kotlin,Java,Android,Kotlin,我是安卓系统的新手。 我已经做了一个活动,在线性布局中显示了我所有的联系人列表和号码。单击线性布局后,如何使用intent拨打电话? 我不知道在我的代码中把setOnclickListener放在哪里。所以我在这里分享所有的源代码 XML <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

我是安卓系统的新手。 我已经做了一个活动,在线性布局中显示了我所有的联系人列表和号码。单击线性布局后,如何使用intent拨打电话? 我不知道在我的代码中把
setOnclickListener
放在哪里。所以我在这里分享所有的源代码

XML

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

    <TextView
            android:id="@+id/itemName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:text="Nama : "
            style="@style/Base.TextAppearance.AppCompat.Headline"/>

    <TextView
            android:id="@+id/itemNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:text="Nomor HP : "
            style="@style/Base.TextAppearance.AppCompat.Body2"/>
      </LinearLayout>
DetailActivity.kt

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        showDetail.setOnClickListener {
            var myDetailIntent = Intent(this, DetailActivity::class.java)
            startActivity(myDetailIntent)
        }

        doAsync {
            Thread.sleep(5000L)
            uiThread {
                showNotivy();
            }
        }
    }

    private fun showNotivy() {
        val notfyDetailIntent = Intent(this@MainActivity,
            DetailActivity::class.java)

        val myPendingIntent = TaskStackBuilder.create(this)
            .addParentStack(DetailActivity::class.java)
            .addNextIntent(notfyDetailIntent)
            .getPendingIntent(110, PendingIntent.FLAG_UPDATE_CURRENT)

        val myNotfyManager = this.getSystemService(android.content.Context.NOTIFICATION_SERVICE) as NotificationManager

        val myBuilder = NotificationCompat.Builder(this)
            .setContentTitle("Show Detail Contact")
            .setContentText("Click Me !")
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentIntent(myPendingIntent)
            .setAutoCancel(true)
        myNotfyManager.notify(1101, myBuilder.build())
    }
}
class DetailActivity : AppCompatActivity(), LoaderManager.LoaderCallbacks<Cursor> {

    var DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME
    var NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER
    val myListContact : MutableList<myContact> = ArrayList();

    override fun onCreateLoader(p0: Int, p1: Bundle?): Loader<Cursor> {
        val MyContentUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI
        val myProjection = arrayOf(DISPLAY_NAME, NUMBER)
        return CursorLoader(this, MyContentUri, myProjection, null, null, DISPLAY_NAME+ " ASC")
    }

    override fun onLoadFinished(p0: Loader<Cursor>, p1: Cursor?) {
        myListContact.clear()
        if (p1!=null) {
            p1.moveToFirst()
            while(!p1.isAfterLast()) {
                myListContact.add(myContact(nama = p1.getString(p1.getColumnIndex(DISPLAY_NAME)),nomorHp = p1.getString(p1.getColumnIndex(NUMBER))))
                p1.moveToNext()
            }
        }

        val contactAdapter = myAdapterRecyView(myListContact)
        myRecyView.apply {
            layoutManager = LinearLayoutManager(this@DetailActivity)
            adapter = contactAdapter
        }
    }

    override fun onLoaderReset(p0: Loader<Cursor>) {
        val contactAdapter = myAdapterRecyView(myListContact)
        myRecyView.apply {
            layoutManager = LinearLayoutManager(this@DetailActivity)
            adapter = contactAdapter
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_detail)

        LoaderManager.getInstance(this).initLoader(1, null, this)
    }
}
class myAdapterRecyView(private  val contact : List<myContact>): RecyclerView.Adapter<myHolder>() {
    override fun onCreateViewHolder(p0: ViewGroup, p1: Int): myHolder {
        return myHolder(LayoutInflater.from(p0.context)
            .inflate(R.layout.layout_recy_view,p0,false))
    }

    override fun getItemCount(): Int  = contact.size
    override fun onBindViewHolder(p0: myHolder, p1: Int) {
        p0.bindContact(contact[p1])
    }
}


class myHolder(view: View):RecyclerView.ViewHolder(view) {
    private  val contactName = view.itemName
    private  val contactNumber = view.itemNumber

    fun bindContact(tmp: myContact) {
        contactName.text = "${contactName.text} ${tmp.nama}"
        contactNumber.text = "${contactNumber.text} ${tmp.nomorHp}"
    }
}


class myHolder(view: View):RecyclerView.ViewHolder(view) {
    private  val contactName = view.itemName
    private  val contactNumber = view.itemNumber

    fun bindContact(tmp: myContact) {
        contactName.text = "${contactName.text} ${tmp.nama}"
        contactNumber.text = "${contactNumber.text} ${tmp.nomorHp}"
    }
}
class myContact  (
val nama : String,
val nomorHp : String
)

您可以将单击操作放在onBind in recycler视图适配器中


类myHolder(视图:视图):RecyclerView.ViewHolder(视图){
private val contactName=view.itemName
private val contactNumber=view.itemNumber
有趣的联系方式(tmp:myContact){
contactName.text=“${contactName.text}${tmp.nama}”
contactNumber.text=“${contactNumber.text}${tmp.nomorHp}”
view.setOnClickListener{
//你的行动在这里。
}
}
}