我有一个问题,这段代码工作得很好,但如果视频是在SD卡不能删除mediaScan。这是一个错误?还是特殊许可?
@Override
public void onVideoSelected(final String uri, String mimeType) {
final AlertDialog.Builder builder = new AlertDialog.Builder(TV.this);
builder.setTitle("Select");
builder.setItems(new CharSequence[]
{"Play Video", "Remove Video"},
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
Intent intent = new Intent(TV.this, MainActivity.class);
intent.putExtra("url", uri);
startActivity(intent);
break;
case 1:
File file = new File(uri);
file.delete();
TV.this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(uri))));
break;
}
}
});
builder.create().show();
}
编辑:
更多代码:
公共类VideosFragment扩展了ContractListFragment实现LoaderManager。LoaderCallbacks,SimpleCursorAdapter。ViewBinder{私有ImageLoader ImageLoader;
@Override
public void onAttach(Activity host) {
super.onAttach(host);
ImageLoaderConfiguration ilConfig=
new ImageLoaderConfiguration.Builder(getActivity()).build();
imageLoader=ImageLoader.getInstance();
imageLoader.init(ilConfig);
}
@Override
public void onActivityCreated(Bundle state) {
super.onActivityCreated(state);
String[] from=
{ MediaStore.Video.Media.TITLE, MediaStore.Video.Media._ID };
int[] to= { android.R.id.text1, R.id.thumbnail };
SimpleCursorAdapter adapter=
new SimpleCursorAdapter(getActivity(), R.layout.row, null,
from, to, 0);
adapter.setViewBinder(this);
setListAdapter(adapter);
getLoaderManager().initLoader(0, null, this);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
CursorAdapter adapter=(CursorAdapter)getListAdapter();
Cursor c=(Cursor)adapter.getItem(position);
int uriColumn=c.getColumnIndex(MediaStore.Video.Media.DATA);
int mimeTypeColumn=
c.getColumnIndex(MediaStore.Video.Media.MIME_TYPE);
getContract().onVideoSelected(c.getString(uriColumn),
c.getString(mimeTypeColumn));
}
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
return(new CursorLoader(
getActivity(),
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
null, null, null,
MediaStore.Video.Media.TITLE));
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor c) {
((CursorAdapter)getListAdapter()).swapCursor(c);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
((CursorAdapter)getListAdapter()).swapCursor(null);
}
@Override
public boolean setViewValue(View v, Cursor c, int column) {
if (column == c.getColumnIndex(MediaStore.Video.Media._ID)) {
Uri video=
ContentUris.withAppendedId(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
c.getInt(column));
DisplayImageOptions opts=new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_media_video_poster)
.build();
imageLoader.displayImage(video.toString(), (ImageView)v, opts);
return(true);
}
return(false);
}
interface Contract {
void onVideoSelected(String uri, String mimeType);
}
}
要正确删除已被媒体扫描仪索引的媒体,应使用“通过内容提供商删除”。例如:
getContentResolver().delete(uri, null, null);
我知道很多问题已经被回答了,但是在我的例子中,我的代码在Oppo、三星手机上运行正常,但是在MI、MOto G、Lenavo手机上不能运行 下面是我的代码:
我的设备是Android6.0.1操作系统,但无法将文件写入外部SD卡,从日志中,没有权限,但我有权申请成功,并在AndroidManifest中获得权限。xml文件; 我使用“adb shell dumpsys package packagename”命令,将读写权限返回到true;然后我看了一下设置- 我必须使用外部SD卡 有人遇到过这个问题吗我觉得这很奇怪 错误日志: 带系统。错误:java
我试图通过应用程序在外部存储目录中创建文件夹和文件。 这总是成功的,isCreated为true,没有任何异常或警告,并且创建了文件夹。 Environment.getExternalStorageDirectory()也返回"/存储/仿真/0"。 但当我尝试在外部存储卡(可移动存储卡)中创建文件夹时,如下所示: 始终f.mkdir()返回false,并且未创建文件夹。同时我可以看到W/Syste
滑行用法:
问题内容: 我正在使用以下代码从服务器下载文件,然后将其写入sd卡的根目录,一切正常: 但是,;表示文件将始终写入root /mnt/sdcard。是否可以指定某个文件夹来写入文件? 例如: 问题答案:
SD卡设备的使用 SD卡设备的使用 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-09-25 misonyo first edition. *//* * 程序清