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