Я знаю, что много раз задавал похожие вопросы, но думаю, что нашел близкое решение.Когда я использую Uri.fromFile (), это работает.Но когда я делаю это с FileProvider.getUriForFile (), он открывает страницу выбора (с которой я хочу отправить файл, например, bluetooth, wifi-direct и т. Д.), Но когда я получаю устройство, происходит сбой (после отображения некоторых сообщенийили вообще ничего не показывает).В случае с блютузом после выбора целевого устройства ничего не происходит.В случае wifi-direct после выбора целевого устройства и когда это устройство принимает запрос, отображается сообщение «Невозможно поделиться контентом. Файл не содержит данных или не сохранен на устройстве» (см. Снимки экрана) ... Можеткто-нибудь, пожалуйста, скажите мне, что я сделал не так?Пожалуйста, прости меня за задание связанных вопросов (я использую lolipop)
для Wi-Fi Direct-Toast для Wi-Fi Direct-После открытия не удалось уведомить
манифест:
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.ragib.apkbackup.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/shareable_paths" />
</provider>
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden|screenLayout">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
путь xml:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<root-path name="system_app_path" path="/system/app/"/>
<root-path name="device_app_path" path="/data/app"/>
<root-path name="sd_card_app_path" path="/mnt/asec/"/>
</paths>
Код для открытия выбора:
menu.getItem(1).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Uri uri=FileProvider.getUriForFile(MainActivity.this,
"com.example.ragib.apkbackup.fileprovider",new File(applicationInfo.sourceDir));
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("application/vnd.android.package-archive");
intent.putExtra(Intent.EXTRA_STREAM,uri);
startActivity(Intent.createChooser(intent,"Share using"));
return true;
}
});