Предположим, у меня есть файл сохранения, saves.xyz
, и я хочу поделиться им по почте.Отправка переименованного файла с помощью Intent.ACTION_SEND
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, content.getShareSubject());
intent.putExtra(Intent.EXTRA_TEXT, content.getShareText());
File savesFile = new File(Environment.getExternalStorageDirectory(), filePath);
Uri savesUri = Uri.fromFile(savesFile);
intent.putExtra(Intent.EXTRA_STREAM, savesUri);
String fileType = activity.getString(R.string.saves_file_type); //"text/xyz"
intent.setType(fileType);
String chooserMessage = activity.getString(R.string.saves_chooser_message);
activity.startActivity(Intent.createChooser(intent, chooserMessage));
Это работает достаточно хорошо.
Однако, теперь я хочу, чтобы иметь возможность переименовать прикрепленный файл (скажем saves-01-01-2017.xyz
).
Я думал о копировании файла, его отправке, а затем удалении, но не нашел способа удалить его чисто после этого (см. this).
Я также пытался реализовать свой собственный FileProvider
(в соответствии с рекомендациями here) и перенаправлять saves-*.xyz
к saves.xyz
, но я не мог получить FileProvider
работать (я, вероятно, не ухватить их функции полностью):
manifest.xml
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mydomain.myapp"
>
...
<application
...
>
<provider
android:name="com.mydomain.myapp.MyFileProvider"
android:authorities="com.mydomain.fileprovider"
android:exported="false"
android:grantUriPermissions="true"
>
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths"
/>
</provider>
...
</application>
</manifest>
file_provider_paths.xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path
name="saves_folder"
path="/"
/>
</paths>
MyFileProvider класс
public class MyFileProvider extends FileProvider {
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
//doesn't print anything
Log.d(MyFileProvider.class.getSimpleName(), uri.toString());
return super.openFile(uri, mode);
}
}
Я был бы признателен, если бы я должен был быть просветленным здесь.
'Теперь я хочу иметь возможность переименовать прикрепленный файл'. Какая суета. Сначала переименуйте файл. Затем прикрепите его. – greenapps
Нет ничего для отправки намерения указать имя. – greenapps
@greenapps Возможно, я не был ясен. Я хочу, чтобы вложенный файл имел другое имя, но я не хочу менять имя моего файла и не оставлять файлы – Irhala