не понимаю, как использовать входящее изображение из намерения выбора Android - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь отобразить изображение на главной странице.изображение будет получено из профиля приложения Whats после отправки этого изображения в мое приложение.

app.js

if (intent.getClipData()) {
        let imageUri = intent.getClipData().getItemAt(0).getUri()
        console.log(imageUri);
    //  content://com.whatsapp.fileprovider/external/WhatsApp/.Shared/photo.jpg
        global.imageUri = imageUri;
    }

xml

<StackLayout class="p-20">
       <Image src="{{ imageUri }}" stretch="none" />

    </StackLayout>

viewModel

imageUri: global.imageUri,

получение этой ошибки

Error in downloadBitmap - java.net.MalformedURLException: Unknown protocol: content

Мне нужно знать, как использовать входящие изображения из намеренных служб Android.

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

добавить эти вещи в манифест Android

<intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>

скопируйте и вставьте этот код куда угодно

if (platform_1.isAndroid) {
        application.android.on(application.AndroidApplication.activityCreatedEvent, function (args) {
            var activity = args.activity;
            // Get intent, action and MIME type
            var intent = activity.getIntent();
            var action = intent.getAction();
            var type = intent.getType();
            if (android.content.Intent.ACTION_SEND === action && type != null) {
                if (type.startsWith("text/")) {
                    handleSendText(intent); // Handle text being sent
                }
                else if (type.startsWith("image/")) {
                    handleSendImage(intent); // Handle single image being sent
                }
            }
            else if (android.content.Intent.ACTION_SEND_MULTIPLE === action && type != null) {
                if (type.startsWith("image/")) {
                    handleSendMultipleImages(intent); // Handle multiple images being sent
                }
            }
            else {
                // Handle other intents, such as being started from the home screen
            }
        });
    }
function handleSendText(intent) {
    if (platform_1.isAndroid) {
        var sharedText = intent.getStringExtra(android.content.Intent.EXTRA_TEXT);
        if (sharedText != null) {
            // Update UI to reflect text being shared
            console.log("sharedText: ", sharedText);
            console.log("Text received!");
            vm.set("sharedText", sharedText);
        }
    }
}
function handleSendImage(intent) {
    if (platform_1.isAndroid) {
        var imageUri = intent.getParcelableExtra(android.content.Intent.EXTRA_STREAM);
        if (imageUri != null) {
            // Update UI to reflect image being shared
            console.log("Image received!");
            var appContext = application.android.context;
            var bitmap = android.provider.MediaStore.Images.Media.getBitmap(appContext.getContentResolver(), imageUri);
            console.log("bitmap: ", bitmap);
            vm.set("bitmap", bitmap);
        }
    }
}
function handleSendMultipleImages(intent) {
    if (platform_1.isAndroid) {
        var imageUris = intent.getParcelableArrayListExtra(android.content.Intent.EXTRA_STREAM);
        if (imageUris != null) {
            // Update UI to reflect multiple images being shared
            console.log("imageUris: ", imageUris);
            console.log("Multiple images received!");
        }
    }
}
0 голосов
/ 23 мая 2019

Вы не можете напрямую отображать изображение, используя контент URI. Вам нужно будет проанализировать фактическую ссылку на файл, используя MediaStore

Вы можете обратиться к исходному коду nativescript-imagepicker для рабочего примера. Возвращает фактический путь к файлу после анализа содержимого URI при выборе изображения из галереи.

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