【发布时间】: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