Android——使用contentprovider获取内容
contentprovider内容提供者,是Android的四大组件之一,可以获得你手机内部的信
息,提供给你的app。
这里写一个获得手机所有音频文件及音频信息,点击播放,大概有这么几步:
1.获得ContentResolver
2.query查找
3.使用
mainactivity:
package com.example.audiotest;import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Audio.Media;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;public class MainActivity extends Activity {private ListView lv;private SimpleCursorAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv = (ListView) findViewById(R.id.main_lv);Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;// 获得ContentResolverContentResolver cr = getContentResolver();String str[] = { Media._ID, Media.DISPLAY_NAME, Media.ARTIST, Media.ALBUM, Media.DURATION, Media.DATA };int to[] = { R.id.tv_id, R.id.tv_name, R.id.tv_artist, R.id.tv_album, R.id.tv_duration, R.id.tv_data };// 查找所有Audio音频信息final Cursor cursor = cr.query(uri, str, null, null, null);// 创建适配器simplecursoradapter 第一字段必须是_idadapter = new SimpleCursorAdapter(this, R.layout.item, cursor, str, to, 0);// 获得音频文件的路径final Cursor cursor2 = cr.query(uri, new String[] { Media.DATA }, null, null, null);lv.setAdapter(adapter);lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {// TODO Auto-generated method stubcursor2.moveToPosition(position);String path = cursor2.getString(0);Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setDataAndType(Uri.parse("file://" + path), "audio/mp3");startActivity(intent);}});}}
item xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><TextView android:id="@+id/tv_id"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:ellipsize="end"/><TextView android:id="@+id/tv_name"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:ellipsize="end"android:layout_marginLeft="5dp"/><TextView android:id="@+id/tv_artist"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:ellipsize="end"android:layout_marginLeft="5dp"/><TextView android:id="@+id/tv_album"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:ellipsize="end"android:layout_marginLeft="5dp"/><TextView android:id="@+id/tv_duration"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:ellipsize="end"android:layout_marginLeft="5dp"/><TextView android:id="@+id/tv_data"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:ellipsize="end"android:layout_marginLeft="5dp"/></LinearLayout>
activity_main中只有一个ListView。
由于获得手机中的东西,自然得需要权限读取sdcard。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Android——使用contentprovider获取内容相关推荐
- android的contentprovider多媒体,Android利用ContentProvider获取本地数据的方法
上一篇,我们讲到ContentProvider的主要功能是,提供共享数据给其他应用使用.在Android系统内部,同样提供了共享数据,查看 android.provider 包下,发现有以下的共享数据 ...
- Android USB 扫码枪获取扫描内容
最近做了关于在Android设备上外接扫码的项目,在此记录一下关于Android USB扫码枪获取内容的问题 首先我这边使用是USB HID的扫码枪,即插即用,只需要在界面上有一个带有焦点的EditT ...
- Android基础知识巩固系列 Android之四大组件——ContentProvider(内容提供者)
因为最近要面试,于是打算整理整理一下Android的基础知识,由于之前本人已经学习过大概的Android基础知识,这里主要讲这四大组件.五大存储.六大布局.网络请求等这些内容,其他一些等有时间再整理, ...
- android 印度语_开放获取内容如何帮助推动印度语维基百科的增长
android 印度语 在印度农村 ,移动Internet连接正在Swift增长,并且由于大多数Internet用户使用其本国语言更加自在,因此使用印度语言制作内容的网站将推动这一增长. 在像印度这样 ...
- Android 中ContentProvider和Uri详解
一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给 ...
- 009 Android之ContentProvider
文章目录 Android文件权限简述 ContentProvider 内容提供者 ContentResolver URI 什么是URI URI示例 URI和URL ContentProvider实例 ...
- 【Android】ContentProvider和Uri详解
原文来自:http://www.cnblogs.com/linjiqin/archive/2011/05/28/2061396.html 一.使用ContentProvider(内容提供者)共享数据 ...
- 【Android】Android中ContentProvider组件详解
原文来自:http://blog.csdn.net/zuolongsnail/article/details/6566317 ContentProvider(内容提供者)是Android中的四大组件之 ...
- Android中ContentProvider组件详解
一.Android四大组件 Android四大组件是Activity, Service, Content Provider,Broadcast Receiver. Activity作为程序界面,直接与 ...
最新文章
- 【Git】在本地创建git库管理自己的代码
- python3 list 列表 方法说明
- 天籁obd接口针脚定义_OBD协议介绍
- flowJS源码个人分析
- C++Doubly Linked List双向链表(附完整源码)
- mybatisplus坑 insert标签insert into select无参数问题
- oracle linux内存推荐分配,[20191114]linux内存分配的讨论.txt
- 【ElasticSearch】ElasticSearch 7.8 IK 同义词 配置
- ARP监听渗透内网的方法
- [转] css3变形属性transform
- jmeter 登录用户并发压力测试案例_用jmeter进行多用户并发压力测试 [转]
- 射频前端行业信息汇总
- 红巨星转场特效预设AE插件 Red Giant Universe 6.0.1 WIN
- php 发 语音验证码,php语音验证码接口_php语音接口_php语音验证码_语音验证码代码示例_达信通...
- 互联网提供的音频/视频服务类型
- 赛意SMOM和金蝶云星空单据接口对接
- There is no Qt version assigned to project
- Android开发(一)-发展和历史
- 晋城一中oj 神奇的序列
- 前端 html button标签