Что следует написать на приемнике и отправляющей стороне, чтобы передать изображение из приложения в другое приложение? - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу отправить изображение Uri из приложения в другое приложение, когда пользователь нажимает кнопку.

Коды на стороне отправки:

val myImage= CropImage.getActivityResult(data)            
iv_crop.setImageURI(myImage.uri)
val myImageUri = myImage.uri

btnSendImgForPocessing?.setOnClickListener {
                val intent = Intent()
                intent.setClassName("com.daily.mylab", "com.daily.mylab.MainActivity")
                intent.putExtra(Intent.EXTRA_STREAM, myImageUri);   
                intent.setType("image/png"); 
                startActivity(intent)
                finish()
}

На стороне получателя следующие коды в MainActivity работают для изображений, выбранных из хранилища;

    private FloatingActionButton mFabPickImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        setupViews();
    }
   private void setupViews() {
        mFabPickImage = findViewById(R.id.fab_pick_image);
        if (mFabPickImage != null) {
            mFabPickImage.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent intent;

                    if (Build.VERSION.SDK_INT >= 19) {
                        intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);
                        intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
                    } else {
                        intent = new Intent(Intent.ACTION_GET_CONTENT);
                    }

                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    intent.setType("image/*");

                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

                    ActivityLauncher.launchActivityForResult(MainActivity.this,
                            Intent.createChooser(intent, getString(R.string.app_name)),
                            REQUEST_PICK_IMAGE);
                }

            });
        }
    }

       protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            Logger.debug("requestCode = %d, resultCode = %d, data = %s",
                    requestCode,
                    resultCode,
                    data);
            if (requestCode == REQUEST_PICK_IMAGE && resultCode == RESULT_OK) {

                  Uri pickedImageUri = data.getData();   

                Logger.debug("picked: %s", pickedImageUri);

                if (pickedImageUri != null) {
                    if(Build.VERSION.SDK_INT >= 19){
                        final int takeFlags = data.getFlags() & Intent.FLAG_GRANT_READ_URI_PERMISSION;
                        getContentResolver()
                                .takePersistableUriPermission(pickedImageUri, takeFlags);
                    }

                    segmentImage(pickedImageUri);            }
            } else {
                super.onActivityResult(requestCode, resultCode, data);
            }
        }

Как редактировать эти коды, чтобы получить Uri (в первом разделе кода названный как myImageUri учитывая выше) из другого приложения? (так как я не хочу выбирать изображения из хранилища)

...