توسط
hoseinr0541
سلام
با کد زیر میشه یه فایل رو تغییر نام داد:
File oldfile = new File(old);
File newfile = new File(new);
oldfile.renameTo(newfile);
این کد روی حافظه داخلی بدون هیچ مشکلی کار میکنه. ولی وقتی بخواهیم یک فایل از داخل sdcard رو با همین کد rename کنیم عمل rename انجام نمیشه. این مشکل از اندروید 5 به بعد وجود داره. بعد از مقداری جستجو فهمیدم برای اندروید 5 میشه از SAF استفاده کرد و اندروید 6 به بعد باید مجوز ها رو در زمان اجرا از کاربر دریافت کرد. از کد زیر برای اندروید 5 استفاده کردم ولی بازم جواب نداد لطفا راهنمایی کنید.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), 42);
Button rename = (Button) findViewById(R.id.rename);
rename.setOnClickListener(this);
}
@Override
public void onActivityResult(int requestCode,int resultCode,Intent resultData) {
if (resultCode != RESULT_OK)
return;
Uri treeUri = resultData.getData();
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
grantUriPermission(getPackageName(), treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION |Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
public void renameclick(View v) {
File oldfile = new File(old);
File newfile = new File(new);
DocumentFile fileuri = DocumentFile.fromFile(oldfile);
fileuri.renameTo(newfile);
}
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .