Android开发之Contentprovider实现获取手机短信((收)发件人、短信内容、收(发)件时间)
2017-02-21 20:39
573 查看
效果如图:
布局activity_massage.xml
?
item_listview.xml
?
massage
?
布局activity_massage.xml
?
<?xml version="1.0" encoding="utf-8"?> <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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="zking.com.g150825_android25_contentprovider02.massage"> <ListView android:id="@+id/listView_main_smslist" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> <TextView android:id="@+id/text_main_empty" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="#00f" android:textSize="24sp" android:gravity="center" android:text="暂无短信信息!" /> </RelativeLayout> |
?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageView_item_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" /> <TextView android:id="@+id/text_item_address" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginLeft="30dp" android:layout_toRightOf="@+id/imageView_item_icon" android:text="TextView" /> <TextView android:id="@+id/text_item_body" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/imageView_item_icon" android:layout_alignLeft="@+id/text_item_address" android:text="TextView" /> <TextView android:id="@+id/text_item_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:text="TextView" /> </LinearLayout> |
?
package zking.com.g150825_android25_contentprovider02; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; public class massage extends AppCompatActivity { private ListView listview; private TextView empty; private Cursor cursor; private MybaseAdapter adapter; private ContentResolver resolver; // 短信数据库放在:手机的内存,/data/data/con.android.providers.telephony/databases/mmssms.db private String uri = "content://sms";// 对外暴露的短信格式 private List<Map<String, String>> smsList; @Override 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(); //resolver.query(uri, projection, selection, selectionArgs, sortOrder) //参数projection:数据库的字段;selection:sql语句;selectionArgs:想让sql插入更新等传入的内容 sortOrder:排序 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; } } } |
相关文章推荐
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容【转】
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容
- Android开发之监听或获取手机短信内容 分类: Android 消息 2015-04-20 19:23 38人阅读 评论(0) 收藏
- 浅析Android手机卫士之手机实现短信指令获取位置
- Android开发之调用系统的ContentProvider——短信的获取和备份