Я хочу поделиться приложением apk с WhatsApp при нажатии определенной кнопки. Вот моя попытка и обстоятельства: Код выглядит следующим образом:
public void onClick(View view) {
Uri uri;
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("plain/text");
uri = Uri.parse("android.resource://com.simon.easycounter/counter.apk");
sendIntent.putExtra(Intent.EXTRA_STREAM,uri);
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
}
Файл apk находится в пакете com.simon.easycounter, где находятся файлы класса Java.
Я много пробовал с разными путями к файлам, я пробовал разные типы MIME, такие как " / ", "application / *", ничего не получалось. При нажатии кнопки отправки в WhatsApp появляется сообщение от WhatsApp, в котором говорится что-то вроде «Не удалось отправить, попробуйте позже.»
Кто-нибудь знает, как решить проблему?
- -Обновление ---
Я создал FileProvider сейчас:
В My Manifest. xml:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths"/>
</provider>
Мои пути к файлам. xml выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="files" path="/" />
<cache-path name="cache" path="/"/>
</paths>
</PreferenceScreen>
А вот мой обновленный код при нажатии кнопки:
public void onClick(View view) {
File newFile = getActivity().getFileStreamPath("counter.apk");
Uri uri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID, newFile);
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("application/vnd.android.package-archive");
sendIntent.putExtra(Intent.EXTRA_STREAM,uri);
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
}
Это правильный способ скопировать apk в файл и создать Uri? В чем проблема, что это не работает? все еще сообщение об ошибке на WhatsApp