Android四大组件之一:ContentProvider(内容提供者)

Android中还提供了名为ContentProvider(内容提供者),可以向其他应用提供数据,但不常用,除非是同一公司开发的App,可以向不同应用提供数据。虽然为Android的四大组件之一,但用法并不复杂。
建立一个Activity,设置三个Button,分别用于手机相册,Mp3,Mp4的数据的获取。在这里用的是内部类监听方式,不要忘了注册监听。
package com.example.administrator.jreduch09.contentprovider;

import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.example.administrator.jreduch09.R;

public class ContentActivity extends AppCompatActivity {
    private Button img, mp3, mp4;
    private TextView show;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_content);
        img = (Button) findViewById(R.id.img);
        mp3 = (Button) findViewById(R.id.mp3);
        mp4 = (Button) findViewById(R.id.mp4);
        show = (TextView) findViewById(R.id.show);
        img.setOnClickListener(new MyListerner());
        mp3.setOnClickListener(new MyListerner());
        mp4.setOnClickListener(new MyListerner());
    }

    public class MyListerner implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            int id = v.getId();
            if (id == R.id.img) {
                String str[] = {MediaStore.Images.Media._ID,
                        MediaStore.Images.Media.DISPLAY_NAME,
                        MediaStore.Images.Media.DATA};
                Cursor cursor = getContentResolver()
                        .query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI
                                , str,
                                null, null, null);
                StringBuilder sbd = new StringBuilder();
                while (cursor.moveToNext()) {
                    sbd.append(cursor.getString(0) + ":");
                    sbd.append(cursor.getString(1) + ":");
                    sbd.append(cursor.getString(2) + "\n");
                }
                show.setText(sbd.toString());
            } else if (id == R.id.mp3) {
                String str[] = {MediaStore.Audio.Media._ID,
                        MediaStore.Audio.Media.DISPLAY_NAME,
                        MediaStore.Audio.Media.DATA,
                        MediaStore.Audio.Media.SIZE,
                        MediaStore.Audio.Media.ARTIST,//作者
                        MediaStore.Audio.Media.DURATION,//时常
                        MediaStore.Audio.Media.ALBUM};//专辑
                Cursor cursor = getContentResolver().query(
                        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                        str,
                       "duration>?",
                        new String[]{"3000"}, null);
                StringBuilder sbd = new StringBuilder();
                while (cursor.moveToNext()) {
                    sbd.append(cursor.getString(0) + ":");
                    sbd.append(cursor.getString(1) + ":");
                    sbd.append(cursor.getString(2) + ":");
                    sbd.append(cursor.getString(3) + ":");
                    sbd.append(cursor.getString(4) + ":");
                    sbd.append(cursor.getString(5) + ":");
                    sbd.append(cursor.getString(6) + "\n");
                }
                show.setText(sbd.toString());
            } else if (id == R.id.mp4) {
                String str[] = {MediaStore.Video.Media._ID,
                        MediaStore.Video.Media.DISPLAY_NAME,
                        MediaStore.Video.Media.DATA,
                        MediaStore.Video.Media.SIZE};
                Cursor cursor = getContentResolver().query(
                        MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                        str,
                        null, null, null);
                StringBuilder sbd = new StringBuilder();
                while (cursor.moveToNext()) {
                    sbd.append(cursor.getString(0) + ":");
                    sbd.append(cursor.getString(1) + ":");
                    sbd.append(cursor.getString(2) + ":");
                    sbd.append(cursor.getString(1) + "\n");

                }
                show.setText(sbd.toString());
            }
        }
    }
}
 
时间: 2024-08-07 04:33:14

Android四大组件之一:ContentProvider(内容提供者)的相关文章

Android组件系列----ContentProvider内容提供者

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4108017.html 联系方式:[email protected] [正文] 一.ContentProvider简介: ContentProvider内容提供者(四大组件之一)主要用于在不同的应用程序之间实现数据共享的功能. ContentProvider可以理解为一个Android应用对外开放的

深入理解Android四大组件之一ContentProvider

ContentProvider作为Android四大组件之一,平时写自己的ContentProvider比较少,但是用到ContentProvider地方还是有的,比如去获取通讯录信息,这其实就间接的使用到了通讯录程序的ContentProvider组件. 先简单说一下ContentProvider组件.后面重点分析源码了解ContentProvider运行的过程. ContentProvider可以实现在应用程序之间共享数据. Android为常见的一些数据提供了默认的ContentProvi

Android 四大组件 (四) ContentProvider介绍

ContentProvider虽然与Activity.Service.BroadcastReceiver齐名为Android四大组件.如果你不是特别开发一款与其他APP有数据交互的应用,它的使用频率远没有另外三者高.因为已经介绍了前三大组件,为了完善Android四大组件介绍了解,这次补充下ContentProvider介绍.哈哈~一边在看世界杯,巴西打瑞士.目前巴西1:0.我把所有金币全压巴西了~题外话说完,下面简单介绍下ContentProvider. 一.  ContentProvider

Android组件系列----ContentProvider内容提供者【4】

(4)单元測试类: 这里须要涉及到另外一个知识:ContentResolver内容訪问者. 要想訪问ContentProvider.则必须使用ContentResolver. 能够通过ContentResolver来操作ContentProvider所暴露处理的接口.一般使用Content.getContentResolver()方法获取ContentResolver对象.第一段中已经提到:ContentProvider有非常多对外能够訪问的方法,在ContentResolver中均有同名的方法

入门篇:9.组件4:ContentProvider(内容提供者)

android 四大基本组件 的ContentProvider(内容提供者) 这个组件其实就是一个应用进行数据或数据库提供.共享其他应用获取数据的组件,其大致的结构图如下: 其中uri是一个重要的中间媒介. 联系到我们平时用的安卓程序,最常见的就是通讯录.在我们的安卓手机里,通讯录的设计其实是两个程序,其中有一个程序没有用户界面,单纯的存储着联系人信息,并且数据库结构复杂,这也是为了保证数据的安全.另外一个程序就是我们可以看见的通讯录程序.那么第一个程序就是一个ContentProvider,用

Android四大组件之ContentProvider

内容提供者 应用的数据库是不允许其他应用访问的,内容提供者的作用就是把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. 我们可以通过自定义内容提供者来了解内容提供者的原理 自定义内容提供者步骤: 第一步:我们想写一个myOpenHelper继承SQLiteOpenHelper,来创建一个数据库 第二步 :写myContentProviderjava类继承ContentProvider的内容提供者类,重写增删改查的方法. 内容提供者需要在清单文件中注册 具体代码: //内容提供者

android四大组件之ContentProvider(一)

ContentProvider学习笔记 1. ContentProvider基本概念 ContentProvider向我们提供了我们在应用程序之前共享数据的一种机制,而我们知道每一个应用程序都是运行在不同的应用程序的,数据和文件在不同应用程序之间达到数据的共享不是没有可能,而是显得比较复杂,而正好Android中的ContentProvider则达到了这一需求,比如有时候我们需要操作手机里的联系人,手机里的多媒体等一些信息,我们都可以用到这个ContentProvider来达到我们所需. (1)

【Android的从零单排开发日记】——Android四大组件之ContentProvider

数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等).如果把第三方应用比作一个黑盒子的话,ContentProvider就像是从里面延伸出来的管道,从这个管道,应用可以把一些数据共享出来,我们也可以往里面输送数据.但是里面怎么处理数据我们看不到,也管不着.并且这个管道是有规范标准的,不是它规定的数据你塞不进

【Android的从零单排开发日记】之入门篇(九)——Android四大组件之ContentProvider

数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等).如果把第三方应用比作一个黑盒子的话,ContentProvider就像是从里面延伸出来的管道,从这个管道,应用可以把一些数据共享出来,我们也可以往里面输送数据.但是里面怎么处理数据我们看不到,也管不着.并且这个管道是有规范标准的,不是它规定的数据你塞不进

Android笔记(五十六) Android四大组件之一——ContentProvider,实现自己的ContentProvider

有时候我们自己的程序也需要向外接提供数据,那么就需要我们自己实现ContentProvider. 自己实现ContentProvider的话需要新建一个类去继承ContentProvider,然后重写类中的的6个抽象方法. onCreate():初始化内容提供器时候会调用,通常会在这里完成对数据库的创建和升级等操作,返回true表示内容提供器初始化成功,返回false则表示失败,注意,只有当存在ContentResolver尝试访问我们程序中的数据时,内容提供其才会被初始化 query():从内