android音乐播放器文章,Android复习09【内容提供者、音乐播放器】

目 录

PersonCp

PersonCp.java

insert()

ContentObserver

音乐播放器

1、添加读写权限

1.1、动态权限授予(调用封装好的方法)

2、获取音乐文件(MainActivity.java)

2、Music.java(实体类)

申请访问SD卡的权限

设置适配器

下拉刷新

PersonCp

PersonCp.java

package cn.wangzg.personcp;

import android.content.ContentProvider;

import android.content.ContentUris;

import android.content.ContentValues;

import android.content.UriMatcher;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.net.Uri;

import java.util.Objects;

public class PersonCp extends ContentProvider { //数据库作为数据源,将数据保存到数据库中。

private MyHelper mHelper;

private final static String AUTHORITY = "cn.wangzg.personprovider";

private static UriMatcher mUriMatcher;

private static final int PERSON_DIR = 0;

private static final int PERSON = 1;

static {

mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

// 该URI表示返回所有的person,其中PERSONS为该特定Uri的标识码

mUriMatcher.addURI(AUTHORITY, "person", PERSON_DIR);

// 该URI表示返回某一个person,其中PERSON为该特定Uri的标识码

mUriMatcher.addURI(AUTHORITY, "person/#", PERSON);

}

@Override

public String getType(Uri uri) {

switch (mUriMatcher.match(uri)) {

case PERSON_DIR:

return "vnd.android.cursor.dir/" + AUTHORITY + ".persons";

case PERSON:

return "vnd.android.cursor.item/" + AUTHORITY + ".person";

default:

throw new IllegalArgumentException("unknown uri" + uri.toString());

}

}

@Override

public boolean onCreate() {

mHelper = new MyHelper(getContext());

return true;

}

@Override

public Uri insert(Uri uri, ContentValues values) {

SQLiteDatabase db = mHelper.getWritableDatabase();

switch (mUriMatcher.match(uri)) {

case PERSON_DIR:

long newId = db.insert("person", "name,phone,salary", values);

//向外界通知该ContentProvider里的数据发生了变化 ,以便ContentObserver作出相应

getContext().getContentResolver().notifyChange(uri, null);

return ContentUris.withAppendedId(uri, newId);

default:

throw new IllegalArgumentException("unknown uri" + uri.toString());

}

}

@Override

public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {

SQLiteDatabase db = mHelper.getWritableDatabase();

int updatedNum = 0;

switch (mUriMatcher.match(uri)) {

// 更新表

case PERSON_DIR:

updatedNum = db.update("person", values, selection, selectionArgs);

break;

// 按照id更新某条数据

case PERSON:

long id = ContentUris.parseId(uri);

String where = "id=" + id;

if (selection != null && !"".equals(selection.trim())) {

where = selection + " and " + where;

}

updatedNum = db.update("person", values, where, selectionArgs);

break;

default:

throw new IllegalArgumentException("unknown uri" + uri.toString());

}

//向外界通知该ContentProvider里的数据发生了变化 ,以便ContentObserver作出相应

Objects.requireNonNull(getContext()).getContentResolver().notifyChange(uri, null);

return updatedNum;

}

@Override

public int delete(Uri uri, String selection, String[] selectionArgs) {

SQLiteDatabase db = mHelper.getWritableDatabase();

int deletedNum = 0;

switch (mUriMatcher.match(uri)) {

// 删除表

case PERSON_DIR:

deletedNum = db.delete("person", selection, selectionArgs);

break;

// 按照id删除某条数据

case PERSON:

long id = ContentUris.parseId(uri);

String where = "id=" + id;

if (selection != null && !"".equals(selection.trim())) {

where = selection + " and " + where;

}

deletedNum = db.delete("person", where, selectionArgs);

break;

default:

throw new IllegalArgumentException("unknown uri" + uri.toString());

}

//向外界通知该ContentProvider里的数据发生了变化 ,以便ContentObserver作出相应

Objects.requireNonNull(getContext()).getContentResolver().notifyChange(uri, null);

return deletedNum;

}

@Override

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {

SQLiteDatabase db = mHelper.getWritableDatabase();

Cursor cursor = null;

switch (mUriMatcher.match(uri)) {

// 查询表

case PERSON_DIR:

cursor = db.query("person", projection, selection, selectionArgs, null, null, sortOrder);

break;

// 按照id查询某条数据

case PERSON:

// 第一步:

long id = ContentUris.parseId(uri);

String where = "id=" + id;

// 第二步:

if (selection != null && !"".equals(selection.trim())) {

where = selection + " and " + where;

}

cursor = db.query("person", projection, where, selectionArgs, null, null, sortOrder);

break;

default:

throw new IllegalArgumentException("unknown uri" + uri.toString());

}

return cursor;

}

}

insert()

af7c1aeb64b99e38aca3ca523a505146.png

ContentObserver

菜鸟教程 【4.4.1 ContentProvider初探】

https://www.runoob.com/w3cnote/android-tutorial-contentprovider.html

0788806f5fdd1e4e43f9a754b6ebb6bb.png

音乐播放器

1、添加读写权限

5ec4ae5075b76a1f8ed52a62cb812398.png

1.1、动态权限授予(调用封装好的方法)

e8728367b418156cb34309c0c0ee79d7.png

2、获取音乐文件(MainActivity.java)

eb440abb3a01a9d7422167a46c9353ec.png

2、Music.java(实体类)

申请访问SD卡的权限

43b68b0749985151d6f23fbb14ea42b5.png

设置适配器

25bec743762a7b6fa811ea9e9d51413d.png

下拉刷新

82563e59b7ca9a75e7bb5790893591db.png

点个赞吧~      b( ̄▽ ̄)d

求求了~

小本生意,不容易啊~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值