中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ContentProvider淺談+實例

發布時間:2020-06-25 21:15:39 來源:網絡 閱讀:302 作者:JustMetU 欄目:移動開發

   作為安卓四大組件之一,ContentProvider的用處也不少,ContentProvider用于保存和檢索數據,是安卓系統中不同應用程序之間共享數據的接口。

   最直觀的應用就是當你發送短信時需要用到聯系人的相關信息,此時通過ContentProvider提供的接口訪問Android系統中的電話簿,并從中選中了聯系人。

   Android系統對一系列公共的常用數據類型提供了對應的ContentProvider接口,都定義在android.provider包下。

   ContentProvider實現共享數據:ContentProvider提供了一組應用程序之間能訪問的接口,應用程序通過ContentProvider把當前應用中的數據共享給其他應用程序訪問,二其他應用程序也可以通過ContentProvider對指定的應用程序進行訪問。將自己的數據公開給其他應用使用有2種方法,1.定義自己的ContentProvider子類,2.將當前應用的數據添加到已有的ContentProvider中。


下面是一個用ContentProvider訪問手機聯系人的例子。




MainActivity代碼:


public class MainActivity extends Activity {


private String[] columns={Contacts._ID,

Contacts.DISPLAY_NAME,

Phone.NUMBER,

Phone.CONTACT_ID

};

private ListView listview;

private Dialog dialog;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listview=(ListView)findViewById(R.id.list1);

dialog=new Dialog(MainActivity.this);

dialog.setTitle("電話");

dialog.setContentView(R.layout.content_dialog);

dialog.setCanceledOnTouchOutside(true);

showinfo();

listview.setOnItemClickListener(new OnItemClickListener() {


public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

// TODO Auto-generated method stub

dialog.show();

}

});

}

private void showinfo(){

ArrayList<HashMap<String ,String>> list=new ArrayList<HashMap<String, String>>();

ContentResolver resolver=getContentResolver();

Cursor cursor=resolver.query(Contacts.CONTENT_URI, null,null,null,null);

   while(cursor.moveToNext()){

   HashMap<String,String> map=new HashMap<String, String>();

   String liststr="";

   int idindex=cursor.getColumnIndex(columns[0]);

   int nameindex=cursor.getColumnIndex(columns[1]);

   int id=cursor.getInt(idindex);

   String name=cursor.getString(nameindex);

   Cursor phone=resolver.query(Phone.CONTENT_URI, null,columns[3]+"="+id,null,null);

   while(phone.moveToNext()){

   int phonenumberindex=phone.getColumnIndex(columns[2]);

   String phonenumber=phone.getString(phonenumberindex);

   liststr+=phonenumber;

   }

   map.put("name", name);

   map.put("phonenumber", liststr);

   list.add(map);

   }

   cursor.close();

   SimpleAdapter simpleAdapter=new SimpleAdapter(this, list, R.layout.simple_adapter_item, new String[]{"name","phonenumber"}, new int[]{R.id.row_text1,R.id.row_text2});

   listview.setAdapter(simpleAdapter);

}



}


這段主要代碼中,Dialog是一個點擊聯系人即可出現的一個懸浮對話框,即紅色部分。


聯系人列表主要是showinfo()方法,即藍色部分,ListView中用的是SimpleAdapter適配。



對應的Xml文件比較簡單,在這里也給出:

ContentProvider淺談+實例




activity_main.xml:


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity" >


    <ListView 

        android:id="@+id/list1"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:scrollbarAlwaysDrawVerticalTrack="true">

        

    </ListView>


</RelativeLayout>




content_dialog.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:text="--電話號碼--"/>

    


</LinearLayout>




simple_adapter_item.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:id="@+id/row_text1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="--------"

        />

    <TextView

        android:id="@+id/row_text2"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="--------"

        />

    


</LinearLayout>





同時,需要進行權限設置,在AndroidMainfest.xml里,


<uses-permission android:name="android.permission.READ_CONTACTS"/>




這樣就ok了,可以訪問系統的電話簿了。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙山县| 临沂市| 信阳市| 临武县| 泽州县| 三穗县| 阿荣旗| 临高县| 施秉县| 桓台县| 呼图壁县| 岳阳市| 扬中市| 柞水县| 邓州市| 昌平区| 安丘市| 冕宁县| 改则县| 察哈| 阿瓦提县| 高碑店市| 海兴县| 瓦房店市| 大冶市| 九江县| 定兴县| 彩票| 通山县| 康平县| 景泰县| 砚山县| 济阳县| 河北省| 思南县| 河南省| 辽阳市| 肥城市| 汕头市| 中西区| 桐庐县|