zoukankan      html  css  js  c++  java
  • 安卓最简通讯录操作样例

    下面样例包含新增通讯录和删除通讯录操作


    1.Activity文件(ContactOPActivity.java)

    <pre class="java" name="code">package com.example.contacttest;
    
    import android.app.Activity;
    import android.content.ContentResolver;
    import android.content.ContentUris;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.ContactsContract.Data;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class ContactOPActivity extends Activity implements OnClickListener {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.contact_op);
    
    		Button addContactButton = (Button)findViewById(R.id.delContactButton);
    		Button delContactButton = (Button)findViewById(R.id.addContactButton);
    		
    		addContactButton.setOnClickListener(this);
    		delContactButton.setOnClickListener(this);
    	}
    
    	@Override
    	public void onClick(View v) {
    		EditText nameEditText = (EditText)findViewById(R.id.nameEditText);
    		EditText phoneNumEditText = (EditText)findViewById(R.id.phoneNumEditText);
    		EditText emailEditText = (EditText)findViewById(R.id.emailEditText);
    		String name = nameEditText.getText().toString();
    		String phoneNum = phoneNumEditText.getText().toString();
    		String email = emailEditText.getText().toString();
    		
    		switch (v.getId()) {
    		case R.id.delContactButton:
    			delContact(name);
    			Toast.makeText(this, "Deleted "+name, Toast.LENGTH_LONG).show();
    			break;
    		case R.id.addContactButton: 
    			addContact(name,phoneNum,email);
    			Toast.makeText(this, "Added "+name, Toast.LENGTH_LONG).show();
    			break;
    		}
    	}
    
    	private void delContact(String name) {
    		Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    		ContentResolver resolver = this.getApplicationContext()
    				.getContentResolver();
    		Cursor cursor = resolver.query(uri, new String[] { Data._ID },
    				"display_name=?", new String[] { name }, null);
    		if (cursor.moveToFirst()) {
    			int id = cursor.getInt(0);
    			resolver.delete(uri, "display_name=?", new String[] { name });
    			uri = Uri.parse("content://com.android.contacts/data");
    			resolver.delete(uri, "raw_contact_id=?", new String[] { id + "" });
    		}
    	}
    
    	private void addContact(String name,String phoneNum,String email) {
    		Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    		ContentResolver resolver = this.getApplicationContext()
    				.getContentResolver();
    		ContentValues values = new ContentValues();
    		long contac_id = ContentUris.parseId(resolver.insert(uri, values));
    		uri = Uri.parse("content://com.android.contacts/data");
    		values.put("raw_contact_id", contac_id);
    		values.put(Data.MIMETYPE, "vnd.android.cursor.item/name");
    		values.put("data2", name);
    		values.put("data1", name);
    		resolver.insert(uri, values);
    		values.clear();
    		values.put("raw_contact_id", contac_id);
    		values.put(Data.MIMETYPE, "vnd.android.cursor.item/phone_v2");
    		values.put("data2", "2");
    		values.put("data1", phoneNum);
    		resolver.insert(uri, values);
    		values.clear();
    		values.put("raw_contact_id", contac_id);
    		values.put(Data.MIMETYPE, "vnd.android.cursor.item/email_v2");
    		values.put("data2", "2");
    		values.put("data1", email);
    		resolver.insert(uri, values);
    		values.clear();
    	}
    }
    
    
    

    2.layout文件:contact_op.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Name:" />
    
            <EditText
                android:id="@+id/nameEditText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10" 
                android:text="jerry">
            </EditText>
        </TableRow>
    
        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Phone:" />
    
            <EditText
                android:id="@+id/phoneNumEditText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10" 
                android:text="13500000000">
            </EditText>
        </TableRow>
    
        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Email:" />
    
            <EditText
                android:id="@+id/emailEditText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10" 
                android:text="test@xx.com">
            </EditText>
        </TableRow>
    
        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <Button
                android:id="@+id/addContactButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Add" />
    
            <Button
                android:id="@+id/delContactButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Delete" />
        </TableRow>
    
    </TableLayout>


    3.manifest配置文件

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.contacttest"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="21" />
        <!-- 读联系人权限 -->
        <uses-permission android:name="android.permission.READ_CONTACTS" />
        <!-- 写联系人权限 -->
        <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name=".ContactOPActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>


    
  • 相关阅读:
    The Zen of Python —— Python 之禅
    单片机最小系统
    处理器是如何驱动外设的
    嵌入式系统、开发板概念
    Xilinx Zynq ZC-702 开发(02)—— 通过 Xilinx SDK 调试 Linux 应用
    Linux 总线、设备、驱动模型 与 设备树
    Xilinx Zynq ZC-702 开发(01)—— 概览
    DLL 函数中使用结构体指针作函数参数(C# 调用 C++ 的 DLL)
    新装 Win7 系统装完驱动精灵,一打开到检测界面就卡死——原因与解决方案
    WPF 主窗口关闭时结束所有相关线程
  • 原文地址:https://www.cnblogs.com/jerry1999/p/4175912.html
Copyright © 2011-2022 走看看