根据姓名查询联系人号码

     最近在学习关于联系人的使用,要做一个关于根据姓查询联系人的简单应用。在进行开发时参考的的是一本比较“古老的”android资料,结果发现再运行时报错。经过一系列查找资料的努力后,终于弄清了问题所在。

      自从android2.0开始,联系人API做了很大的改动,这些之前我并不清楚,但是在经历这件事之后我才弄明白。 点击查看

下面就是具体代码:

BundleActivity:

package com.android.ba;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class BundleActivity extends Activity 
{
    private Button mybutton;
    private EditText myedittext;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mybutton=(Button) findViewById(R.id.button01);
        myedittext=(EditText) findViewById(R.id.edittext01);
        mybutton.setOnClickListener(new OnClickListener() 
        {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

//获得姓名字符串 String name=myedittext.getText().toString();
//实例化Bundle对象 Bundle data
=new Bundle();
//添加信息 data.putString(
"name", name);
//实例化Intent Intent intent
=new Intent(BundleActivity.this, secondActivity.class); intent.putExtras(data); startActivity(intent); } }); } }

 

secondActivity:

package com.android.ba;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.TextView;

public class secondActivity extends Activity
{
    private TextView textview;
     public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.show);
            textview=(TextView) findViewById(R.id.textview02);
            Intent intent=getIntent();
            Bundle b=intent.getExtras();
            String name=b.getString("name");
//查询返回的项目 String[] projection
=new String[] { ContactsContract.Contacts._ID,ContactsContract.PhoneLookup.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER}; //设置需要返回的索引资源(Sqlite数据库) Uri contacts=ContactsContract.CommonDataKinds.Phone.CONTENT_URI; //需要查询的姓名 String[] args={name}; Cursor managedCursor=managedQuery(contacts, projection, ContactsContract.PhoneLookup.DISPLAY_NAME+"=?", args, ContactsContract.PhoneLookup.DISPLAY_NAME); if(managedCursor.moveToFirst()) { String name1=managedCursor.getString(1); String number=managedCursor.getString(2); textview.setText(name1+":"+number); } } }

 

main.xml:

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

    <LinearLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview01"
        android:text="请输入姓名"
        >
        
    </TextView>
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/edittext01"
        android:text=""
        >
        
    </EditText>
        
    </LinearLayout>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button01"
        android:text="查询"
        >
        
    </Button>

</LinearLayout>

 

show.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" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview02"
        android:text="">
        
    </TextView>

    

</LinearLayout>

 

Manifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.ba"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".BundleActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="secondActivity"></activity>
    </application>
<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> </manifest>

 

下面是managedQuery的详细解析:。 点击查看

 

 

 

 

 

 

转载于:https://www.cnblogs.com/yuzhibo/archive/2013/05/20/3088140.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值