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());
}
}
}
}
Android四大组件之一:ContentProvider(内容提供者)的更多相关文章
- Android 四大组件之" ContentProvider "
前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...
- Android四大组件之——ContentProvider(一)
Android四大组件之--ContentProvider(一) 本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论. 欢迎转载,转载请注明网址:http://www.cnblog ...
- 【Android开发日记】之入门篇(九)——Android四大组件之ContentProvider
数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供 ...
- Android组件系列----ContentProvider内容提供者
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android组件系列----ContentProvider内容提供者【1】
[正文] 一.ContentProvider简单介绍: ContentProvider内容提供者(四大组件之中的一个)主要用于在不同的应用程序之间实现数据共享的功能. ContentProvider能 ...
- 初学android:四大组件之contentprovider
一.ContentProvider的概念ContentProvider:为存储和获取数据提供统一的接口.可以在不同的应用程序之间共享数据.Android已经为常见的一些数据提供了默认的ContentP ...
- Android组件系列----ContentProvider内容提供者【4】
(4)单元測试类: 这里须要涉及到另外一个知识:ContentResolver内容訪问者. 要想訪问ContentProvider.则必须使用ContentResolver. 能够通过ContentR ...
- Android 四大组件之四(ContentProvider)
ContentProvider调用关系: ContentProvider(数据提供者)是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法. ContentProvider可以指定需要共 ...
- android四大组件之ContentProvider(二)
ContentProvider学习笔记 上一章节我们编写了自定义的一个StudentProvider,他提供了两种供外界访问数据的方式,content://come.demo.sqlite.stude ...
- android四大组件之ContentProvider(一)
ContentProvider学习笔记 1. ContentProvider基本概念 ContentProvider向我们提供了我们在应用程序之间共享数据的一种机制,虽然采用文件和SharedPref ...
随机推荐
- SQL表建立,临时表,表变量示例
CODE: USE Sales; GO /* CREATE TABLE Orders ( OrderID int IDENTITY(1,1) PRIMARY KEY, OrderGUI uniquei ...
- SysErrorMessage 函数和系统错误信息表
在看 API 文档时, 我们经常见到 GetLastError; 它可以返回操作后系统给的提示.但 GetLastError 返回的只是一个信息代码, 如何返回对应的具体信息呢?FormatMessa ...
- lc面试准备:Implement Stack using Queues
1 题目 Implement the following operations of a stack using queues. push(x) -- Push element x onto stac ...
- bzoj2326
首先不难得出递推式f[i]=(f[i-1]*10^k+i) mod m;f[i]表示接到第i个数时的余数,k表示i的位数不难想到先按位数穷举位数,然后对于确定的位数,构造矩阵解决易得出:f[i] ...
- windows 7 下 BCGControlBar 的安装破解
一定要以管理员权限启动,否则没有注册码输入框,不能破解,折腾我好几遍 谨记
- 安装完出现Deprecated: Function ereg_replace() is deprecated in
php5.3说明 先不要用php5.3吧,毕竟目前版本要修改这个工作量太大,而且可能会有很多未知错误,这只能在下一版全部改用perl的正则了,都不明白php官方发 什么神经,此外不支持应该是直接屏 ...
- vijosP1046 观光旅游(最小环)
vijosP1046 观光旅游 链接:https://vijos.org/p/1046 [思路] Floyd求解最小环. [代码] #include<iostream> using nam ...
- windows调用ubuntu下的sublimeText2环境搭建
部署需求: windows: windows 7 32 sp1 32位: linux :ubuntu 12.04 LTS 64位: 环境: windows安装:xmanager 4 linux安装:g ...
- AQL Subset Compiler:手把手教你如何写一个完整的编译器
项目地址:https://github.com/laiy/Awesome-Complier. 转载请注明出处. 前言 这是学校里编译原理课程的大作业,此Project十分适合编译原理的学习,让基本不听 ...
- 320. Generalized Abbreviation
首先想到的是DFS,对于每个单词的字母都遍历,比如 spy: 1py,s1y,sp1 然后每个遍历完的单词再DFS..左右有数字就合并比如 1py: 11y=>2py, 1p1 这样.. 但是单 ...