編輯:關於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", "[email protected]"); 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(); } } }
前言:為了使ListView性能更優,最普遍的方法就是添加一個ViewHolder靜態類。雖然性能有很大的提高,但是同樣也伴隨著Item控件內容顯示重復或錯亂的情況。&n
1.多窗口支持Android N 添加了對同時顯示多個應用窗口的支持。 在手持設備上,兩個應用可以在“分屏”模式中左右並排或上下並排顯示。在電視設
public boolean dispatchTouchEvent(MotionEvent ev){} 用於事件的分發,Android中所有的事件都必須經
使用情景:最近有個需求是統計後台應用運行時間,如果一個應用在後台運行超過一定時間就Kill掉進程,達到省電的目的。此時就可以使用PkgUsageStats這個類來實現啦!