Моя цель - выбрать изображение прямо из Галереи телефона и использовать его в моем приложении, как если бы вы делились им с другими приложениями, такими как WhatsApp, Mail, Messenger ... и т. Д. c и c.
Мне нужно:
- Выбрать изображение из галереи.
- Выбрать мое приложение в диалоговом окне общего доступа.
- Запустить конкретный 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
Как всегда, большое спасибо за вашу помощь.