Как я могу поделиться apk-файлом в моем приложении (поделиться apk-файлом того же приложения) - PullRequest
0 голосов
/ 01 марта 2020

Приложение вылетает при нажатии кнопки. Я сделал простое приложение, которое делится своим apk-файлом, нажимая кнопку. Я хочу реализовать его в своем основном приложении, но не знаю, в чем ошибка

package com.studenthelper.share;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.io.File;

public class MainActivity extends AppCompatActivity {
    Button shr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        shr = (Button) findViewById(R.id.but);
        shr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                ApplicationInfo api = getApplicationContext().getApplicationInfo();
                String filePath = api.sourceDir;

                Intent intent = new Intent(Intent.ACTION_SEND);
                intent.setType("application/vnd.android.package-archive");

                intent.putExtra(Intent.EXTRA_STREAM,
                        Uri.fromFile(new File(filePath)));
                startActivity(Intent.createChooser(intent, "Share Using"));
            }
        });
    }
}

log 2020-03-01 17: 26: 53.758 4741-4741 / com.studenthelper.share E / AndroidRuntime : ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.studenthelper.share, PID: 4741 android .os.FileUriExposedException: файл: ///data/app/com.studenthelper.share-s51_qOKFxmQ8bo6zuBgGow%3D%3D/base.apk раскрыт вне пределов приложение через ClipData.Item.getUri () в android .os.StrictMode.onFileUriExposed (StrictMode. java: 1978) в android. net .Uri.checkFileUriExposed (Uri. java: 2371) в android .content.ClipData.prepareToLeaveProcess (ClipData. java: 963) в android .content.Intent.prepareToLeaveProcess (Intent. java: 10228) в android .content.Intent.prepareToLeaveProcess (Intent. java: 10234) в android .content.Intent.prepareToLeaveProcess (Intent. java: 10213) в android .app.Instrumentation.execStartActivity (Инструментарий. java: 1669) в android .app .Activity.startActivityForResult (Activity. java: 4590) по адресу androidx.fragment.app.FragmentActivity.startActi vityForResult (FragmentActivity. java: 676) в android .app.Activity.startActivityForResult (Activity. java: 4548) в androidx.fragment.app.FragmentActivity.startActivityForResult (FragmentActivity. java: 663) в android .app.Activity.startActivity (Activity. java: 4909) по android .app.Activity.startActivity (Activity. java: 4877) по адресу com.studenthelper.share.MainActivity $ 1.onClick (MainActivity. java: 33) в android .view.View.performClick (просмотр. java: 6605) в android .view.View.performClickInternal (просмотр. java: 6582) в android .view .View.access $ 3100 (просмотр. java: 778) в android .view.View $ PerformClick.run (просмотр. java: 25897) в android .os.Handler.handleCallback (обработчик. java: 873) в android .os.Handler.dispatchMessage (Обработчик. java: 99) в android .os.Looper.l oop (Looper. java: 193) в android. app.ActivityThread.main (ActivityThread. java: 6692) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) по тел. android .internal.os.Zyg oteInit.main (ZygoteInit. java: 858) 2020-03-01 17: 26: 53.787 4741-4741 / com.studenthelper.share I / Процесс: отправка сигнала. PID: 4741 SIG: 9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...