gpt4 book ai didi

安卓 : Get recently added media in Android Device similarly to File Manager

转载 作者:搜寻专家 更新时间:2023-11-01 08:31:45 26 4
gpt4 key购买 nike

我正在开发一个应用程序,我必须在用户以任何方式(无论是下载还是传输)插入新图像、视频、音频或 apk 时立即通知用户,类似于什么文件经理应用程序做。我不知道从哪里开始。谢谢

最佳答案

这是我的完整代码,用于在设备中添加新媒体(图像、音频或视频)时通知用户。它可能会对某人有所帮助。此外,我会在添加新媒体后立即显示推送通知。

已编辑(已解决的问题如下)
1.仅在添加媒体时通知用户,不删除。

    public class MediaTrackerService extends Service {

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// images
getContentResolver().registerContentObserver(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
true, new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);

Media media = readFromMediaStore(
getApplicationContext(),
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

File file = new File(media.file.getPath());
Date fileData = new Date(file.lastModified());

if (System.currentTimeMillis() - fileData.getTime() > 3000) {

} else {

if (!media.file.getPath().contains("WhatsApp")) {
String saved = media.file.getName();

// deduce bitmap before using
Bitmap bitmap = BitmapFactory
.decodeFile(media.file.getPath());

Intent intent = new Intent();
intent.setDataAndType(Uri.fromFile(media.file),
"image/*");
PendingIntent pendingIntent = PendingIntent
.getActivity(getApplicationContext(),
0, intent, 0);

Notification n = new Notification.Builder(
getApplicationContext())
.setStyle(
new Notification.BigPictureStyle()
.bigPicture(bitmap))
.setContentTitle(
"New Image File For You")
.setContentText("File Name :" + saved)
.setSmallIcon(R.drawable.alert_icon_1)
.setContentIntent(pendingIntent)
.setAutoCancel(true).build();

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

notificationManager.notify(0, n);
}
}
}

@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
}
});
// audio
getContentResolver().registerContentObserver(
android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
true, new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Media media = readFromMediaStore(
getApplicationContext(),
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);

File file = new File(media.file.getPath());
Date fileData = new Date(file.lastModified());

if (System.currentTimeMillis() - fileData.getTime() > 3000) {

} else {

if (!media.file.getPath().contains("WhatsApp")) {

String saved = media.file.getName();

Bitmap bitmap = BitmapFactory
.decodeFile(media.file.getPath());

Intent intent = new Intent();
intent.setDataAndType(Uri.fromFile(media.file),
"audio/*");
PendingIntent pendingIntent = PendingIntent
.getActivity(getApplicationContext(),
0, intent, 0);

Notification n = new Notification.Builder(
getApplicationContext())
.setStyle(
new Notification.BigPictureStyle()
.bigPicture(null))
.setContentTitle(
"New audio File For You")
.setContentText("File Name :" + saved)
.setSmallIcon(R.drawable.alert_icon_1)
.setContentIntent(pendingIntent)
.setAutoCancel(true).build();

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

notificationManager.notify(0, n);
}
}
}

@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
}
});
// video
getContentResolver().registerContentObserver(
android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
true, new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Media media = readFromMediaStore(
getApplicationContext(),
MediaStore.Video.Media.EXTERNAL_CONTENT_URI);

File file = new File(media.file.getPath());
Date fileData = new Date(file.lastModified());

if (System.currentTimeMillis() - fileData.getTime() > 3000) {

} else {
if (!media.file.getPath().contains("WhatsApp")) {

String saved = media.file.getName();

Intent intent = new Intent();
intent.setDataAndType(Uri.fromFile(media.file),
"video/*");
PendingIntent pendingIntent = PendingIntent
.getActivity(getApplicationContext(),
0, intent, 0);

Notification n = new Notification.Builder(
getApplicationContext())
.setStyle(
new Notification.BigPictureStyle()
.bigPicture(null))
.setContentTitle(
"New Video File For You")
.setContentText("File Name :" + saved)
.setSmallIcon(R.drawable.alert_icon_1)
.setContentIntent(pendingIntent)
.setAutoCancel(true).build();

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

notificationManager.notify(0, n);
}
}
}

@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
System.out
.println("here is the service change EXTERNAL 1 params"
+ " " + uri);
}
});
return START_STICKY;
}

private Long readLastDateFromMediaStore(Context context, Uri uri) {
Cursor cursor = context.getContentResolver().query(uri, null, null,
null, "date_added DESC");
Long dateAdded = (long) -1;
if (cursor.moveToNext()) {
dateAdded = cursor.getLong(cursor
.getColumnIndexOrThrow(MediaColumns.DATE_ADDED));
}
cursor.close();
return dateAdded;
}

private Media readFromMediaStore(Context context, Uri uri) {
Cursor cursor = context.getContentResolver().query(uri, null, null,
null, "date_added DESC");
Media media = null;
if (cursor.moveToNext()) {
int dataColumn = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
String filePath = cursor.getString(dataColumn);
int mimeTypeColumn = cursor
.getColumnIndexOrThrow(MediaColumns.MIME_TYPE);
String mimeType = cursor.getString(mimeTypeColumn);
media = new Media(new File(filePath), mimeType);
}
cursor.close();
return media;
}

private class Media {
private File file;

private String type;

public Media(File file, String type) {
this.file = file;
this.type = type;
}

public String getType() {
return type;
}

public File getFile() {
return file;
}
}
}

并且不要忘记注销您的观察者 onDestroy()

getContentResolver().unregisterContentObserver(yourObserverObject);

关于安卓 : Get recently added media in Android Device similarly to File Manager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40025585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com