Не удается получить URL-адрес или данные с помощью веб-интентов

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

Я использую Cordova 5.1.1 и добавил следующие плагины в свой проект платформы Android:

com.virtualartifacts.webintent 1.0.0 "WebIntent"
cordova-plugin-camera 1.1.0 "Camera"
cordova-plugin-console 1.0.0 "Console"
cordova-plugin-device 1.0.0 "Device"
cordova-plugin-file 2.0.0 "File"
cordova-plugin-file-transfer 1.1.0 "File Transfer"
cordova-plugin-whitelist 1.0.0 "Whitelist"

Файл index.html для проекта выглядит так:

<!DOCTYPE html>
<html>
<head>
    <title>WebIntent Test</title>
    <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
    <script src="cordova.js"></script>
    <script src="js/webintent.js"></script>
    <script>
        function init() {
            document.addEventListener("deviceready",deviceReady,false);
        }
        function deviceReady() {
            console.log("App started. Device ready");
            window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_STREAM,
                    function(data) {
                        console.log(data); // which never gets called
                    }, function(e) {
                        console.log(e);
                        // I simply get the message "Error"
                    });
        }
    </script>
</head>
<body onload="init()">
    <h1>Demo WebIntent</h1>
</body>
</html>

так что ничего особенного здесь нет. после некоторого поиска в сети я нашел некоторую информацию о том, что плагин webintent содержит ошибки (как упоминалось в заголовке здесь на SO. Итак, я нашел исправленную версию и дважды проверил, что правильный код находится в файле WebIntent.java, который есть.

Я также добавил теги фильтра намерений в файл AndroidManifest.xml следующим образом:

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

Когда я установил приложение на устройство и пытаюсь поделиться изображением, мое приложение появляется в списке приложений, которые могут обрабатывать этот обмен, и я также получаю текст «Приложение запущено ...», поэтому я знаю, что оно получает называется.

Но независимо от того, какой образ я пробую, я всегда достигаю части «ошибки» метода getExtra, и мой console.log показывает только «Ошибка». Отладка производится прямо на устройстве через GapDebug.

Есть ли что-то, что мне не хватает, или у кого-нибудь есть идея, как заставить мое приложение получать изображения из других приложений для работы?

Заранее спасибо!


person Olli    schedule 10.07.2015    source источник


Ответы (1)


В этом плагине Cordova есть ошибка, вместо этого используйте эту вилку

https://github.com/florentvaldelievre/virtualartifacts-webintent

так что просто удалите старый

Плагин кордовы rm com.virtualartifacts.webintent

и добавить новый

Плагин Cordova добавляет https://github.com/florentvaldelievre/virtualartifacts-webIntent.git

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

Это работает при выборе одного изображения, массивы потоков пока не работают.

person Phil Giggles    schedule 01.09.2015
comment
большое спасибо за эту информацию. Жаль, что несколько изображений/файлов, кажется, не работают, так как это тоже то, что мне нужно... - person Olli; 01.09.2015