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());
            }
        }
    }
}
 

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

  1. Android 四大组件之" ContentProvider "

    前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...

  2. Android四大组件之——ContentProvider(一)

    Android四大组件之--ContentProvider(一) 本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论. 欢迎转载,转载请注明网址:http://www.cnblog ...

  3. 【Android开发日记】之入门篇(九)——Android四大组件之ContentProvider

    数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供 ...

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

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. Android组件系列----ContentProvider内容提供者【1】

    [正文] 一.ContentProvider简单介绍: ContentProvider内容提供者(四大组件之中的一个)主要用于在不同的应用程序之间实现数据共享的功能. ContentProvider能 ...

  6. 初学android:四大组件之contentprovider

    一.ContentProvider的概念ContentProvider:为存储和获取数据提供统一的接口.可以在不同的应用程序之间共享数据.Android已经为常见的一些数据提供了默认的ContentP ...

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

    (4)单元測试类: 这里须要涉及到另外一个知识:ContentResolver内容訪问者. 要想訪问ContentProvider.则必须使用ContentResolver. 能够通过ContentR ...

  8. Android 四大组件之四(ContentProvider)

    ContentProvider调用关系: ContentProvider(数据提供者)是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法. ContentProvider可以指定需要共 ...

  9. android四大组件之ContentProvider(二)

    ContentProvider学习笔记 上一章节我们编写了自定义的一个StudentProvider,他提供了两种供外界访问数据的方式,content://come.demo.sqlite.stude ...

  10. android四大组件之ContentProvider(一)

    ContentProvider学习笔记 1. ContentProvider基本概念 ContentProvider向我们提供了我们在应用程序之间共享数据的一种机制,虽然采用文件和SharedPref ...

随机推荐

  1. 你真的有必要退出吗——再说Android程序的退出功能

    转自你真的有必要退出吗--再说Android程序的退出功能 搞Android开发有一段时间了,相信很多从Windows开发过来的Android程序员都习惯性地会跟我一样遇到过同一个问题:如何彻底退出程 ...

  2. [wikioi]数字三角形

    http://wikioi.com/problem/1220/ 最基本经典的DP题目,唯一有点意思的是,自底向上计算会更简洁.另外对这种+方式累计的DP,可以直接把原来的存进去,然后再加,本质是不用在 ...

  3. 关于spring3中No Session found for current thread!and Transaction的配置和管理(转)

    今天我是特别的郁闷,本来项目做到一半,以前都好好的,结果下午就出现问题,苦逼的到现在才解决.它出现问题的时候都一声不坑, ,(天啦,现在才发现CSDN啥时候把QQ表情给整过来了)就在注册用户的时候,咦 ...

  4. 10.在Global全局文件中的Application_BeginRequest示例

    只要有人访问本网站,都要执行全局文件的Application_BeginRequest事件.因此我们可以防盗链. 示例要求:凡不是网站本机登录的都给客户端提示,用图片显示. 分析:由于网页在加载时不是 ...

  5. restful风格,restcontroller与controller

    restful风格,restcontroller与controller 初步接触springmvc的时候,被要求使用restful风格,彼时一头雾水,不懂何谓restful,参阅了很多资料,慢慢的接触 ...

  6. Spring 4 and MyBatis Java Config

    TL;DR With the Java Config enhancements in Spring 4, you no longer need xml to configure MyBatis for ...

  7. Spark RCFile的那些“坑”

    RCFile在平台的应用场景中多数用于存储需要“长期留存”的数据文件,在我们的实践过程中,RCFile的数据压缩比通常可以达到8 : 1或者10 : 1,特别适用于存储用户通过Hive(MapRedu ...

  8. autoit使用

    autoit下载地址: http://www.autoitx.com/thread-12964-1-1.html?sid=4zMMSb 在autoit的安装目录下有个Au3Info.exe文件,该文件 ...

  9. Unity Kajiya Hair Shader Mod by Normals

    Shader "HairShader" { Properties { _MainTex ("Diffuse (RGB) Alpha (A)", 2D) = &q ...

  10. [转]让程序在崩溃时体面的退出之SEH+Dump文件

    原文地址:http://blog.csdn.net/starlee/article/details/6649605 在我上篇文章<让程序在崩溃时体面的退出之SEH>中讲解了SEH中try/ ...