nfc.addMimeTypeListener снова открывает приложение (пробел в телефоне) - PullRequest
0 голосов
/ 19 мая 2018

Итак, я пытаюсь отправить информацию с одного телефона на другой через NFC, используя phonegap.Я хочу, чтобы любая информация, которую я посылаю из одного приложения, в какой-то момент сохранялась как переменная, чтобы я мог либо отображать ее, манипулировать ею и т. Д. У меня возникает проблема, что всякий раз, когда я пытаюсь отправить текст с одного телефона, онпросто открывает приложение, но не отображает текст, как следует.У меня есть пользовательский Mimetype и фильтр намерений, настроенный для запуска приложения на другом телефоне, поэтому я не считаю, что это является проблемой. Я думаю, что я могу неправильно использовать функцию addMimeTypeListener, но не уверен.Буду признателен за любую помощь в разъяснении моей проблемы.

Здесь я вызываю функцию addMimeTypeListener в функции deviceready:

    deviceready: function () {
    document.getElementById('checkbox').addEventListener('change', app.toggleCheckbox, false);
    sample.addEventListener('click', app.showSampleData, false);

    nfc.addNdefListener(
        function() {
            app.notifyUser("Found an NDEF formatted tag");
        },
        function() {
            app.notifyUser("Success.");
        },
        function() {
           app.notifyUser("Fail.");
        }
    );
    nfc.addMimeTypeListener(
        "text/shunt",
        parseTag,

        function() {
           app.notifyUser("Success");
        },
        function() {
            app.notifyUser("Fail");
        }
    );
},

Здесь можно вызвать функцию анализируемого тега

    function parseTag(nfcEvent) {
var records = nfcEvent.tagData;

for (var i = 0; i < records.length; i++) {
    var record = records[i],
        p = document.createElement('p');
    p.innerHTML = nfc.bytesToString(record.payload);
    display.appendChild(p);
    app.notifyUser(p);
}

А вот мой фильтр намерений только для справки

    <application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <data android:mimeType="text/shunt" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

Я пытался следовать примерам chariotsolutions, чтобы понять, как это работает, но все еще не очень удачно.

Спасибо.

edit: @Michael Roland

Вот функция, с которой я отправляю данные через NFC.Эта функция вызывается из функции deviceready.Я знаю, что могу передавать информацию с одного устройства на другое с помощью NFC.Но когда приложение открыто на другом устройстве и отображает эту информацию в приложении, я пытаюсь заставить его работать.
shareMessage: function () {

    var mimeType = 'text/shunt',
        payload = 'test',
        record = ndef.mimeMediaRecord(mimeType, nfc.stringToBytes(payload));
        nfc.share([record]);
},

1 Ответ

0 голосов
/ 09 июня 2018

Обычно это исправляется в AndroidManifest.xml.В прошлом добавление android:noHistory="true" к XML-активности не позволяло Android запускать новое приложение.Это было какое-то время, поэтому могут быть некоторые новые флаги.Смотри https://github.com/chariotsolutions/phonegap-nfc#launching-your-android-application-when-scanning-a-tag.

...