安卓短信读取并在自定义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
原创粉丝点击