gpt4 book ai didi

android - 如何以编程方式重命名 SD 卡中的音频文件?

转载 作者:行者123 更新时间:2023-11-29 21:20:09 24 4
gpt4 key购买 nike

这是我在 ListView 中显示所有音乐文件名的代码,这里我将所有文件放入数组列表中,然后显示在 ListView 中,方法是使用上下文菜单对列表项执行“重命名”,但这些更改不会影响实际sd 卡中的文件,建议我如何执行此操作,我尝试过这样的文件操作。

path = "/sdcard/";
if (getIntent().hasExtra("path")) {
path = getIntent().getStringExtra("path");
}
setTitle(path);
// Read all files sorted into the values-array
values = new ArrayList();
File dir = new File(path);
if (!dir.canRead()) {
setTitle(getTitle() + " (inaccessible)");
}
final String[] list = dir.list();
if (list != null) {
for (String file : list) {
if (file.contains(".3gp")) {
values.add(file);
}
}
}
Collections.sort(values);
// Put the data into the list
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_2,
android.R.id.text1, values);
setListAdapter(adapter);
registerForContextMenu(myList);
}

final int CONTEXT_MENU_DELETE = 1;
final int CONTEXT_MENU_RENAME = 2;

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
menu.add(Menu.NONE, CONTEXT_MENU_DELETE, Menu.NONE, "silmek");
menu.add(Menu.NONE, CONTEXT_MENU_RENAME, Menu.NONE, "adını değiştirmek");
}

@Override
public boolean onContextItemSelected(MenuItem item) {

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
Long id = myList.getAdapter().getItemId(info.position);
final int number_of_item_in_listview = Integer.valueOf(id.intValue());
final int context_menu_number = item.getItemId();

switch (item.getItemId()) {

这就是我使用 ListView 的上下文菜单以语法方式重命名文件的方式

case CONTEXT_MENU_RENAME:

AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("öğeyi yeniden adlandırmak");
alert.setMessage("Seçili öğe için yeni bir isim girin");

final EditText input = new EditText(this);
alert.setView(input);

alert.setPositiveButton("tamam",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
String value = input.getText().toString();
values.set(number_of_item_in_listview, value
+ ".3gp");
adapter.notifyDataSetChanged();
/*
* File sdcard =
* Environment.getExternalStorageDirectory(); File
* from = new File(sdcard,"from.txt"); File to = new
* File(sdcard,"to.txt"); from.renameTo(to);
*/
File f = new File(path + filename);
if (f != null && f.exists()) {
File from = new File(f, f.getName());
File to = new File(f, value);
from.renameTo(to);
}

}
});

alert.setNegativeButton("iptal",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
}
});
alert.show();
return (true);
}
return (super.onOptionsItemSelected(item));

最佳答案

我建议使用 File.renameTo() 而不是运行 mv 命令,因为我很确定后者不受支持..

您是否已授予您的应用程序写入 SD 卡的权限?

您可以通过将以下内容添加到您的 AndroidManifest.xml 来执行此操作:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果在添加权限后它不起作用,请在尝试重命名文件时检查设备日志是否有错误(使用 adb 命令或在 Eclipse 的 logcat View 中)。

当访问 SD 卡时,你不应该硬编码路径,而是使用 Environment.getExternalStorageDirectory() 方法来获取目录。

以下代码适用于我:

File sdcard = Environment.getExternalStorageDirectory();
File from = new File(sdcard,"from.txt");
File to = new File(sdcard,"to.txt");
from.renameTo(to);

关于android - 如何以编程方式重命名 SD 卡中的音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830822/

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