編輯:關於Android編程
主要還是用內容提供者ContentProvider來訪問數據庫
package com.wzw.contacts;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
private String tag="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void queryContact(View v){
Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
Uri datauri=Uri.parse("content://com.android.contacts/data");
Cursor cursor = getContentResolver().query(uri, new String[]{"_id"}, null, null, null);
if(cursor!=null && cursor.getCount()>0){
while(cursor.moveToNext()){
//獲取raw_contact_id的值,然後再data表中讀取數據
int id=cursor.getInt(0);
String selection="raw_contact_id=?";
String selectionArgs[]={String.valueOf(id)};
Cursor c=getContentResolver().query(datauri, new String[]{"data1","mimetype"}, selection, selectionArgs, null);
if(c!=null && c.getCount()>0){
while(c.moveToNext()){
//循環在data中讀取數據
String mimetype=c.getString(1);
String data=c.getString(0);
if("vnd.android.cursor.item/email_v2".equals(mimetype)){
Log.i(tag, "Email:"+data);
}else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
Log.i(tag, "聯系電話:"+data);
}else if ("vnd.android.cursor.item/name".equals(mimetype)) {
Log.i(tag, "聯系姓名:"+data);
}
}
}
}
}
}
public void addContact(View v){
Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
Uri datauri=Uri.parse("content://com.android.contacts/data");
//1.取出raw_contacts中的最大id
Cursor cursor=getContentResolver().query(uri, new String[]{"contact_id"}, null, null, "contact_id desc limit 1");
if(cursor!=null && cursor.moveToFirst()){
int contact_id=cursor.getInt(0)+1;
cursor.close();
//2.在raw_contacts添加一條ID
ContentValues values=new ContentValues();
values.put("contact_id", contact_id);
getContentResolver().insert(uri, values);
//3.根據上面的contact_id在data中添加三條記錄,分別是電話,聯系名字,郵箱
//添加郵箱
values=new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/email_v2");
values.put("data1", "bey@163.com");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(datauri, values);
//添加姓名
values=new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("data1", "中國聯通");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(datauri, values);
//添加號碼
values=new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("data1", "10010");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(datauri, values);
Toast.makeText(this, "添加成功,ID是"+contact_id, 0).show();
}
}
}
Android ListView滑動過程中控件顯示重復/錯誤問題之原理分析及解決方案
前言:為了使ListView性能更優,最普遍的方法就是添加一個ViewHolder靜態類。雖然性能有很大的提高,但是同樣也伴隨著Item控件內容顯示重復或錯亂的情況。&n
Android7(N)開發者應該知道的一切(最全)
1.多窗口支持Android N 添加了對同時顯示多個應用窗口的支持。 在手持設備上,兩個應用可以在“分屏”模式中左右並排或上下並排顯示。在電視設
android控件之間事件傳遞
public boolean dispatchTouchEvent(MotionEvent ev){} 用於事件的分發,Android中所有的事件都必須經
Android 取得應用程序的啟動次數和運行時間等信息
使用情景:最近有個需求是統計後台應用運行時間,如果一個應用在後台運行超過一定時間就Kill掉進程,達到省電的目的。此時就可以使用PkgUsageStats這個類來實現啦!