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

Posted

技术标签:

【中文标题】nfc.addMimeTypeListener 再次重新打开应用程序(phonegap)【英文标题】:nfc.addMimeTypeListener re-opens the app again (phonegap) 【发布时间】:2018-10-29 09:03:47 【问题描述】:

所以我正在尝试使用 phonegap 通过 NFC 将信息从一部手机发送到另一部手机。我希望我从一个应用程序发送的任何信息在某个时候都保存为一个变量,这样我就可以显示它,操作它等等。我遇到的问题是,每当我尝试从一部手机发送文本时,它只是打开应用程序,但没有显示应有的文本。我有一个自定义 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 示例以了解它的工作原理,但仍然没有太多运气。

谢谢。

编辑: @迈克尔·罗兰

这是我通过 NFC 发送数据的功能。该函数从 deviceready 函数中调用。我知道我可以通过 NFC 将信息从一台设备传输到另一台设备。但是让应用程序在另一台设备上打开并在应用程序中显示该信息是我努力让它工作的地方。 分享消息:函数()

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

【问题讨论】:

如何发送数据? 这是我通过 NFC 发送数据的功能。该函数从 deviceready 函数中调用。我知道我可以通过 NFC 将信息从一台设备传输到另一台设备。但是让应用程序在另一台设备上打开,并在应用程序中显示该信息是我努力让它工作的地方。 shareMessage: function () var mimeType = 'text/shunt', payload = 'test', record = ndef.mimeMediaRecord(mimeType, nfc.stringToBytes(payload)); nfc.share([记录]); , 【参考方案1】:

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

【讨论】:

以上是关于nfc.addMimeTypeListener 再次重新打开应用程序(phonegap)的主要内容,如果未能解决你的问题,请参考以下文章

山西易招标合并表格数据失败请稍后再试。怎么回事?

Google Universal Analytics 再营销和动态再营销

定时器连环炸弹:先2s炸一下,再4s炸一下,再2s炸一下,再4s炸一下如此循环下去。

现在的你不能再混再疯再懒惰了

在虚拟机上装CentOS 7

管理员设定搜索时间间隔为3秒,请稍后再试,在哪个php里