1.读取手机联系人
//获取内容访问者 ContentResolver cr = getContentResolver();
mLvShow = (ListView) findViewById(R.id.lv_show); dataList = getDataList(); adapter = new SimpleAdapter(this, dataList, R.layout.simple_contacts_item// , new String[] { "name", "number", "email" }// , new int[] { R.id.tv_name, R.id.tv_number, R.id.tv_email }); mLvShow.setAdapter(adapter); } /** * 加载数据 * * @return */ private List<Map<String, String>> getDataList() { List<Map<String, String>> list = new ArrayList<Map<String, String>>(); ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query(ContactsContract.RawContacts.CONTENT_URI, new String[] { ContactsContract.RawContacts._ID, ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY }// , null, null, null); while (cursor.moveToNext()) { Map<String, String> map = new HashMap<String, String>(); String id = cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts._ID));// "_id" String name = cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY));// "display_name" map.put("name", name); // 联系人号码 Cursor phoneCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI// , new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER }// "data1" , "raw_contact_id=?", new String[] { id }, null); if (phoneCursor.moveToNext()) { String number = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); map.put("number", number); } // 联系人邮箱 Cursor emailCursor = resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI// , new String[] { ContactsContract.CommonDataKinds.Email.ADDRESS}// "data1" , "raw_contact_id=?", new String[] { id }, null); if (emailCursor.moveToNext()) { String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS)); map.put("email", email); } list.add(map); } return list; } }
在用ListView展示出来
2.获取手机短信内容
根据内容提供者来获取
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_massage); listview = (ListView) this.findViewById(R.id.listView_main_smslist); empty = (TextView) this.findViewById(R.id.text_main_empty); listview.setEmptyView(empty); // 内容提供者获取数据库操作链接和数据库内的数据 // 通过Context类获取ContentResolver resolver = getContentResolver();
cursor = resolver.query(Uri.parse(uri), new String[] { "_id", "address", "body", "date", "type" }, null, null, null); smsList = cursorToList(cursor); // 建一个baseAdapter类 adapter = new MybaseAdapter(smsList); listview.setAdapter(adapter);
} public List<Map<String, String>> cursorToList(Cursor cursor2) { List<Map<String, String>> list = new ArrayList<Map<String, String>>(); while (cursor2.moveToNext()) {// 注意:这里是循环每一行的数据 Map<String, String> smsItem = new HashMap<String, String>(); for (int i = 0; i < cursor2.getColumnCount(); i++) {// 这里是循环每一行的列数 smsItem.put(cursor2.getColumnName(i), cursor2.getString(i));// 键:key:存储每一行的字段,value:值就是内容 } list.add(smsItem); } cursor2.close(); return list; } class MybaseAdapter extends BaseAdapter { private List<Map<String, String>> smsList; public MybaseAdapter(List<Map<String, String>> smsList) { this.smsList = smsList; } @Override public int getCount() { return this.smsList.size(); } @Override public Object getItem(int position) { return this.smsList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = getLayoutInflater().inflate( R.layout.item_listview, null); TextView text_address = (TextView) convertView .findViewById(R.id.text_item_address); TextView text_body = (TextView) convertView .findViewById(R.id.text_item_body); TextView text_date = (TextView) convertView .findViewById(R.id.text_item_date); ImageView image_type = (ImageView) convertView .findViewById(R.id.imageView_item_icon); holder.text_address = text_address; holder.text_body = text_body; holder.text_date = text_date; holder.image_type = image_type; convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } // 设置UI控件的内容 holder.text_address.setText(this.smsList.get(position).get( "address")); holder.text_body.setText(this.smsList.get(position).get("body")); long mills = Long.parseLong(this.smsList.get(position).get("date") .toString()); SimpleDateFormat adf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); holder.text_date.setText(adf.format(new Date(mills))); int type = Integer.parseInt(this.smsList.get(position).get("type") .toString()); switch (type) { case 1: holder.image_type.setImageResource(R.drawable.file); break; case 2: holder.image_type.setImageResource(R.drawable.folder); break; } return convertView; } class ViewHolder { private TextView text_address; private TextView text_body; private TextView text_date; private ImageView image_type; } }
在清单文件加上权限
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_SMS"/>
3.一个简单的音乐播放
主要是MediaPlayer
代码如下
public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private SeekBar sb_main_bar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar); sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { int progress=seekBar.getProgress(); //在当前位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ ImageButton imageButton= (ImageButton) view; if (mediaPlayer==null){ mediaPlayer = MediaPlayer.create(this, R.raw.f); mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); }else if (mediaPlayer.isPlaying()){ mediaPlayer.pause(); imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } } class MyThread extends Thread{ @Override public void run() { super.run(); while(sb_main_bar.getProgress()<=sb_main_bar.getMax()){ //获取音乐当前播放的位置 int position=mediaPlayer.getCurrentPosition(); sb_main_bar.setProgress(position); } } } }