Android中ContentProvider的简单使用

来源:互联网 发布:数据库应用系统饭店 编辑:程序博客网 时间:2024/06/10 03:00

内容提供器是应用程序之间共享数据的接口,Android系统将这种机制应用到方方面面。
使用ContentProvider的好处就是不需要考虑数据内部是怎么存储的,比如说如果我们想利用ContenProvider来存数据,只需告诉insert函数该ContentProvider的uri和想存入的数据(包括列名和数值),查询时也是一样,只需输入Uri和查询的表,列名和查询条件,至于ContentProvider里面是怎么进行这些操作的我们不需要知道。

简单使用:
以获取通话记录为例,
Mainactivity:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取系统的通话记录        //利用系统的内容提供者查询的时候,会返回一个Cursor对象        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {            // TODO: Consider calling            //    ActivityCompat#requestPermissions            // here to request the missing permissions, and then overriding            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,            //                                          int[] grantResults)            // to handle the case where the user grants the permission. See the documentation            // for ActivityCompat#requestPermissions for more details.            // 6.0以上系统才会运行到 运行检查上(6.0以下不会出现这种情况)            Toast.makeText(MainActivity.this, "没给权限啊,怎么办?", Toast.LENGTH_SHORT).show();            finish();            return;        }        Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);        while (cursor.moveToNext()){            String number = cursor.getColumnName(cursor.getColumnIndex(CallLog.Calls.NUMBER));            String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));            String time = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DATE));            //将时间格式化(处理成我们能看懂的样子)            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");            time = simpleDateFormat.format(new Date(Long.valueOf(time)));            Log.d("MainActivity","name:" + name);            Log.d("MainActivity","number:" + number);            Log.d("MainActivity","time:" + time);        }        cursor.close();}

写完之后,不要以为就完事了,还需要在清单文件中添加权限,

<uses-permission android:name="android.permission.READ_CALL_LOG"/>

本人菜鸟一个,有什么不对的地方希望大家指出评论,大神勿喷,希望大家一起学习进步!

1 0