安卓短信读取并在自定义listview中显示
来源:互联网 发布:中国固定资产投资数据 编辑:程序博客网 时间:2024/05/18 00:19
最近在做android广播的东西,网上看资料有人提到广播拦截短信,才发现自己没有了解过安卓短信方面的知识,于是自己做个一个短信阅读器~这只是原型,以后会完善的。
我做的实例中用了listview的自定义适配器来显示短信内容。下面看代码部分
主要类主
package com.example.guangbo;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Adapter;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.TextView;import com.example.guangbo.MyAdapter.ViewHolder;public class main extends Activity {private Button bt;private ListView list; private MyAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // textView1=(TextView)findViewById(R.id.textView1); bt=(Button)findViewById(R.id.btnEnable); list=(ListView)findViewById(R.id.listview); li_phone lii=new li_phone(); bt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {li_phone li=new li_phone();li.deleteList();ArrayList<Map<String,String>> Adapter=new ArrayList<Map<String,String>>(); try { // 准备系统短信收信箱的uri地址 Uri uri = Uri.parse("content://sms/inbox");// 收信箱 // 查询收信箱里所有的短信 Cursor isRead = main.this.getContentResolver().query(uri, null,null, null, null); String str=""; if(isRead.equals("")){ // textView1.setText("没有未读短信"); }else{ while (isRead.moveToNext()) //如果有下一条 { HashMap<String, String> map=new HashMap<String, String>(); String phone = isRead.getString(isRead.getColumnIndex("address")).trim();//获取发信人 String body = isRead.getString(isRead.getColumnIndex("body")).trim();// 获取信息内容 li.setList(phone); map.put("address", phone); map.put("body", body); Adapter.add(map); } } } catch (Exception e) { e.printStackTrace(); } adapter=new MyAdapter(Adapter, main.this); int i=adapter.getCount(); list.setAdapter(adapter);Log.e(li.getListSize()+"", li.getListSize()+"");}}); } }
列表视图自定义适配器类 MyAdapter
package com.example.guangbo;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.TextView;public class MyAdapter extends BaseAdapter{ // 填充数据的list private static ArrayList<Map<String,String>> list ; private Context context; // 用来导入布局 private LayoutInflater inflater = null; // 构造器 public MyAdapter(ArrayList<Map<String,String>> list1 , Context context1) { context = context1; list = list1; inflater = LayoutInflater.from(context); }@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0);}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub ViewHolder holder = null; if (convertView == null) { // 获得ViewHolder对象 holder = new ViewHolder(); // 导入布局并赋值给convertview convertView = inflater.inflate(R.layout.phone,null); holder.tvph = (TextView) convertView.findViewById(R.id.tvph); holder.tvcn = (TextView) convertView.findViewById(R.id.tvcn); // 为view设置标签 convertView.setTag(holder); } else { // 取出holder holder = (ViewHolder) convertView.getTag(); } holder.tvph.setText(list.get(position).get("address").toString()); holder.tvcn.setText(list.get(position).get("body").toString());return convertView;} public final class ViewHolder{ public TextView tvph; public TextView tvcn; }}
布局文件 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" 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=".MainActivity" > <ListView android:id="@+id/listview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/btnEnable" ></ListView> <Button android:id="@+id/btnEnable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/listview" android:layout_alignParentTop="true" android:text="刷新" /></RelativeLayout>
列表视图项配置文件 phone.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvph" android:layout_width="match_parent" android:layout_height="40px" android:text="号码" android:textSize="30px" android:textColor="#000000" /> <TextView android:id="@+id/tvcn" android:layout_width="match_parent" android:layout_height="40px" android:text="内容" android:textSize="15px" android:textColor="#CD1076" /> </LinearLayout>
最后是权限配置 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.guangbo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.guangbo.main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
下面上效果图〜
0 0
- 安卓短信读取并在自定义listview中显示
- C# 读取DataSet数据并显示在ListView控件中
- winfrom读取当前进程并显示在listview中
- C#读取Dataset数据并显示在ListView控件中
- 安卓解析XML并显示在ListView
- 安卓ListView获取信息并显示
- 从另一个qml文件中读取数据并显示在ListView中
- 从另一个qml文件中读取数据并显示在ListView中
- 从网络读取数据并动态的显示在ListView中
- 从网络读取数据并动态的显示在ListView中
- 在ListView中绑定并显示数据
- 读取XML并在TreeCtrl中显示
- 安卓开发:自定义ListView布局,并实现监听事件
- 安卓简单开发--listview在Scrollview中只显示一行
- 在Android中发送短信和彩信,监听短信并显示
- 在Android中发送短信和彩信,监听短信并显示
- android遍历文件夹并显示在listview中
- ContentResolver实现获取手机联系人并显示在ListView中
- nefu 667
- 恩
- Java 高新技术 7K面试题(银行业务调度系统)
- Log4Net配置
- ini_set的用法
- 安卓短信读取并在自定义listview中显示
- 走进黑客的世界 - 《黑客与画家》读书笔记
- IOS设计模式的六大设计原则之依赖倒置原则(DIP,Dependence Inversion Principle)
- hadoop测试
- 用户登录过程
- ioctl函数介绍
- JQuery_2.1.0_日记 5.4 Sizzle选择器(二)
- Myeclipse代码提示及如何设置自动提示
- 如何将MyEclipse中写的程序在windows的命令行提示符里面运行