ContentProviderSms 获取手机短信

来源:互联网 发布:cocos2dx lua mac 编辑:程序博客网 时间:2024/05/29 08:39
import android.content.ContentResolver;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.CursorAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;/** * 获取手机短信 * @author alice * */public class MainActivity extends AppCompatActivity {    private ListView listView;    private TextView empty_tv;    private String path = "content://sms";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listView);        empty_tv = new TextView(this);        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);        empty_tv.setText("当前listView为空");        empty_tv.setLayoutParams(params);        listView.setEmptyView(empty_tv);        // 获取ContentRecolver 实例化对象        ContentResolver resolver = getContentResolver();        Cursor cursor = resolver.query(Uri.parse(path), null, null, null, null);        MyCursorAdapter adapter = new MyCursorAdapter(this, cursor, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);        listView.setAdapter(adapter);    }    class MyCursorAdapter extends CursorAdapter {        public MyCursorAdapter(Context context, Cursor c, int flags) {            super(context, c, flags);            // TODO Auto-generated constructor stub        }        /*         * 第一个参数:  当前Item的 View(ViewGroup)         * 第三个参数  就是  当前Cursor         *         */        @Override        public void bindView(View view, Context context, Cursor c) {            TextView address_tv = (TextView) view.findViewById(R.id.address_tv);            TextView body_tv = (TextView) view.findViewById(R.id.body_tv);            TextView type_tv = (TextView) view.findViewById(R.id.type_tv);            // 电话号码            String number = c.getString(c.getColumnIndex("address"));            // 消息发送的内容            String body = c.getString(c.getColumnIndex("body"));            // 消息的类型            String type = c.getString(c.getColumnIndex("type"));            address_tv.setText(number);            body_tv.setText(body);            // 进行判断 是接收到的短信 还是发送出去的短信            if (type.equals("1")) {                type_tv.setText("接收");            } else if (type.equals("2")) {                type_tv.setText("发送");            }        }        //直接将每个条目的View  返回即可        @Override        public View newView(Context arg0, Cursor arg1, ViewGroup arg2) {            return LayoutInflater.from(MainActivity.this).inflate(R.layout.item_layout, null);        }    }}

布局

<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="alice.bw.com.day16contentprovidersms.MainActivity">    <ListView        android:id="@+id/listView"        android:layout_width="match_parent"        android:layout_height="match_parent" /></RelativeLayout>

item_layout

<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/address_tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="TextView" />    <TextView        android:id="@+id/body_tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="TextView" />    <TextView        android:id="@+id/type_tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="TextView" /></LinearLayout>

权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"          package="alice.bw.com.day16contentprovidermedia">    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN"/>                <category android:name="android.intent.category.LAUNCHER"/>            </intent-filter>        </activity>    </application></manifest>
原创粉丝点击