zoukankan      html  css  js  c++  java
  • Android 四大组件学习之ContentProvider三

    上节课学习怎样自己创建一个ContentProvider。以及用ContentResolver去操作ContentProvider。

    今天我们用系统提供的ContentProvider。 先来个简单的,读取系统的短信内容。

    依据上节知道。既然要读取系统的短信,那就得先找到系统的短信在那里?

    先找到短信数据库所在的问题,然后导出,查看里面的内容

    既然已经分析好了,我们须要什么,不须要什么。 当然还须要知道短信提供者给第三方的URL。

    这个能够通过Android源代码查看。

    那我们就写一个程序,读取系统中的短信

    先看Activity中的代码:

    public class ReadMessageActivity extends Activity {
    
    	Button readMessage;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_readmessage);
    		
    		readMessage = (Button)findViewById(R.id.button1);
    		readMessage.setOnClickListener(new OnClickListener() {
    			
    			@Override
    			public void onClick(View arg0) {
    				Log.i("ReadMessageActivity", "读取联系人按钮按下了");
    				
    				ContentResolver cResolver = getContentResolver();
    				/**
    				 * uri: 是短信提供者的url。能够通过查看源代码获得
    				 * projection:须要查询的几个字段,关心那个查询按个即可
    				 */
    				Cursor cursor = cResolver.query(Uri.parse("content://sms"), new String[]{"address", "date", "type", "body"}, null, null, null);
    				while(cursor.moveToNext())
    				{
    					String address = cursor.getString(cursor.getColumnIndex("address"));
    					String date = cursor.getString(cursor.getColumnIndex("date"));
    					String type = cursor.getString(cursor.getColumnIndex("type"));
    					String body = cursor.getString(cursor.getColumnIndex("body"));
    					
    					Log.i("ReadMessageActivity", address + ";" + date + ";" + type + ";" + body);
    				}
    				
    			}
    		});
    	}
    }
    

    布局文件就一个button,不做详解

    打印结果为:

    ok。 读取系统短信就算是简单的完毕了。

    接着我们往系统中写一条短信

    我们再加一个插入短信的button。然后当按下时就插入一条短信:

    代码例如以下:

    		writeMessage.setOnClickListener(new OnClickListener() {
    			
    			@Override
    			public void onClick(View arg0) {
    				// 写短信button被按下
    				
    				ContentResolver cResolver = getContentResolver();
    				
    				ContentValues values = new ContentValues();
    				values.put("body", "对不起。您因为尾号为6789的手机号。欠费1w元,已停机!

    "); values.put("address", 10086); values.put("date", System.currentTimeMillis()); values.put("type", 1); cResolver.insert(Uri.parse("content://sms"), values); } });


    结果例如以下:

    能够看到数据库中已经有信插入的信息,同一时候对话框中也出现了。 所以插入短信就搞定了。



  • 相关阅读:
    程序员修炼之道阅读笔记1
    构建之法阅读笔记6
    构建之法阅读笔记5
    构建之法阅读笔记4
    构建之法阅读笔记3
    构建之法阅读笔记2
    关于搜狗输入法的评价
    找水王
    用户场景
    个人工作总结
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6903417.html
Copyright © 2011-2022 走看看