100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Android——使用contentprovider获取内容

Android——使用contentprovider获取内容

时间:2024-06-03 06:11:47

相关推荐

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 .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="/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"/>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。