Как поделиться APK из моего приложения в WhatsApp в android? - PullRequest
0 голосов
/ 04 апреля 2020

Я хочу поделиться приложением 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

...