Выбор изображения из галереи / фотографий и использование в моем приложении Flutter - PullRequest
0 голосов
/ 04 августа 2020

Моя цель - выбрать изображение прямо из Галереи телефона и использовать его в моем приложении, как если бы вы делились им с другими приложениями, такими как WhatsApp, Mail, Messenger ... и т. Д. c и c.

Мне нужно:

  1. Выбрать изображение из галереи.
  2. Выбрать мое приложение в диалоговом окне общего доступа.
  3. Запустить конкретный c экран, переданный в изображение.

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

Этот пакет https://pub.dev/packages/receive_sharing_intent, кажется, делает то, что мне нужно, но не очень прозрачным и естественным образом ... поскольку вместо значка и имени приложения в диалоговом окне общего доступа отображается созданное расширение iOS для этого плагина ..

В этом посте Как поделиться изображением на iOS и Android с помощью Flutter? Я вижу, что ответ Саймона может быть решением, но пытаюсь реализовать это я получаю довольно много ошибок после вставки примера кода Kotlin в MainActivity.kt файл. Думаю, его нужно обновить.

Это мой MainActivity.kt файл с добавленным кодом из ответа Саймона:

package com.vinny.fixit_cloud_biking

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        GeneratedPluginRegistrant.registerWith(this)

        MethodChannel(flutterView,"channel:me.albie.share/share").setMethodCallHandler { methodCall, _ ->
            if (methodCall.method == "shareFile") {
                shareFile(methodCall.arguments as String)
            }
        }
    }

    private fun shareFile(path:String) {
        val imageFile = File(this.applicationContext.cacheDir,path)
        val contentUri = FileProvider.getUriForFile(this,"me.albie.share",imageFile)

        val shareIntent = Intent()
        shareIntent.action = Intent.ACTION_SEND
        shareIntent.type="image/jpg"
        shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri)
        startActivity(Intent.createChooser(shareIntent,"Compartir usando"))
    }

}

Ошибки onCreate(): Cannot access 'androidx.lifecycle.lifecycleOwner' which is a super type of 'com.vinny.fixit_cloud_biking.MainActivity'. Check your module class path for missing or conflicting dependencies.

onCreate: overrides nothing

Ошибки MethodChannel:

Cannot access 'androidx.lifecycle.lifecycleOwner' which is a super type of 'io.flutter.embedding.android.FLutterActivity'. Check your module class path for missing or conflicting dependencies.

Unresolved reference: flutterView

Как всегда, большое спасибо за вашу помощь.

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