nfc.addMimeTypeListener再次重新打开应用程序(phonegap)

时间:2018-05-18 21:28:52

标签: javascript android phonegap-plugins nfc phonegap

所以我试图通过NFC使用phonegap将信息从一部手机发送到另一部手机。我希望从一个应用程序发送的任何信息都可以在某个时刻保存为变量,这样我就可以显示它,操纵它等等。我遇到的问题是每当我尝试从一部手机发送文本时,它只是打开应用程序,但不显示应该的文本。我有一个自定义Mimetype和一个意图过滤器设置为在另一部手机上打开应用程序,所以我不相信这是问题。我想我可能使用addMimeTypeListener函数错误但不太确定。任何帮助澄清我的问题都将不胜感激。

这是我在deviceready函数中调用addMimeTypeListener函数的地方:

    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的例子,以了解它是如何运作但仍然没有太多运气。

谢谢。

编辑: @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 :(得分:0)

这通常在AndroidManifest.xml中修复。过去,将android:noHistory="true"添加到活动xml会阻止Android启动新应用。它已经有一段时间了,所以可能会出现一些较新的旗帜。请参阅https://github.com/chariotsolutions/phonegap-nfc#launching-your-android-application-when-scanning-a-tag