【问题标题】:App called "NFC services" replacing my own app名为“NFC 服务”的应用程序替换了我自己的应用程序
【发布时间】:2015-03-09 08:52:30
【问题描述】:

我希望我的 Android 应用在扫描 NFC 标签后启动,因此为了进行一些测试,我修改了 Favebooks(Titanium 的简单教程应用)的 tiapp.xml,添加了以下几行:

<android xmlns:android="http://schemas.android.com/apk/res/android">
<manifest>
    <uses-permission android:name="android.permission.NFC"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-sdk android:minSdkVersion="14"/>
    <uses-feature android:name="android.hardware.nfc" android:required="true"/>
    <application android:theme="@style/Theme.Titanium">
        <activity
        android:configChanges="keyboardHidden|orientation"
        android:label="Favebooks"
        android:launchMode="singleTop"
        android:name=".FavebooksActivity" android:screenOrientation="portrait">
            <intent-filter>
                <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:host="test.it" android:scheme="https"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
    </application>
</manifest>
</android>

不幸的是,另一个名为“Nfc 服务”的应用程序在扫描标签后启动而不是它,它看起来与 Favebooks 完全一样。我已经尝试了所有可用的launchMode,但都无济于事。我究竟做错了什么? Here's a screenshot.

编辑

为了简单起见,让我们把它放在 index.js 中。

Ti.API.info('Launch Intent ' + Ti.App.Android.launchIntent.getData());

var win = Ti.UI.createWindow({
    layout : 'vertical',
    height : 'auto'
});

var text = Ti.UI.createTextField({
    name : 'test',
    hintText : 'test'
});
win.add(text);

win.open();

现在让我们尝试通过将设备靠近标签来启动应用程序。它这样做是正确的:

[INFO] : TiRootActivity: (main) [0,0] 检查点,在根活动恢复时。活动 = com.Test.app.TestActivity@42a0df48 [INFO]:启动意图https://test.com

如果我们按下主页按钮,点击应用程序图标并检查我们的日志,我们可以看到刚刚启动的活动 ID 不同。例如,我们在文本字段中写入的任何内容都丢失了。我不希望这种情况发生。

[INFO] : TiRootActivity: (main) [0,0] checkpoint, on root activity create, savedInstanceState: null [INFO] : 启动意图 null [INFO] : TiRootActivity: (main) [0,0] 检查点,在根活动恢复时。活动 = com.Test.app.TestActivity@42cb8370

【问题讨论】:

  • 你能发布你的NFC代码吗?另外,您手动打开活动然后对活动进行 nfc 操作的屏幕截图是吗?
  • 该屏幕截图是我通过单击其图标启动应用程序,然后单击主页按钮,然后扫描标签。 NFC 代码是什么意思?

标签: android android-intent titanium nfc


【解决方案1】:

我认为您的问题的答案是将这行代码 android:launchMode="singleTop" 替换为以下代码:android:launchMode="singleTask"

我发布了同一问题的答案here

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    您所看到的实际上是 您的 应用程序。您的应用在最近的应用历史记录中显示为“Nfc 服务”(可能带有不同的图标)似乎是 Android(或某些 Android 版本???)中的错误(?)。 p>

    另请参阅此问题:When reading a NDEF tag the content it's showed in “NFC service” instead of the app

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题,我知道原因是 android:name=".FavebooksActivity",如果我删除了活动的名称,则没有替换应用程序。我希望这可以帮助你。

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多