Bom dia, estou trabalhando em um projeto onde captura fotos a partir da câmera e armazena os arquivos internamente, me deparei com a situação onde preciso renomear o mesmo porém o arquivo não altera o nome do mesmo e não é possível exibir a imagem a partir do novo nome e do caminho passado.
Segue o código usado para renomear, permissões do manifesto e o resultado dos métodos.
Manifesto:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
<uses-permission android:name="com.google.android.orv=="></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
Resultado obtido a partir da Intent da Câmera:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
//content://media/external/images/media/120 //caminho da imagem usado para exibição + sequencial referente a fotpo
String destinationFilename = android.os.Environment.getExternalStorageDirectory().getPath() + sourceFilename;//diretorio completo do arquivo
String caminho = destinationFilename.substring(0, 42);
//iv_preview.setImageURI(image_uri);//usado para a exibição
//Metodo usado para renomear o arquivo
File from = new File(caminho, image_uri.toString());
File to = new File(caminho, "123456");
from.renameTo(to);
iv_preview.setImageURI(image_uri);//exibição funcionando
//iv_preview.setImageURI(Uri.parse(caminho + to));//nao exibe
}
}
Resultados:
String sourceFilename = image_uri.getPath(); == content://media/external/images/media/198
String destinationFilename = android.os.Environment.getExternalStorageDirectory().getPath() + sourceFilename; == /storage/emulated/0/external/images/media/
to == content:/media/external/images/media/123456
Obrigado.