我正在将NFC应用到Xamarin Forms现有应用程序中,最初用于Zebra TC51(Android 6.0)。
必须固定应用,以便用户无法访问设备的其余部分。
在OnCreate中,在MainActivity.cs中,我有以下几行:
NfcManager NfcManager = (NfcManager)Android.App.Application.Context.GetSystemService(Context.NfcService);
_nfcAdapter = NfcManager.DefaultAdapter;
然后我使用以下类来接收标记:
[Activity IntentFilter(new[] { "android.nfc.action.NDEF_DISCOVERED" },
DataMimeType = MainActivity.ViewApeMimeType,
Categories = new[] { "android.intent.category.DEFAULT" })]
public class NfcActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//SetContentView(Resource.Layout.DisplayHominid);
if (Intent == null)
{
return;
}
var intentType = Intent.Type ?? String.Empty;
if (MainActivity.ViewApeMimeType.Equals(intentType))
{
var rawMessages = Intent.GetParcelableArrayExtra(NfcAdapter.ExtraNdefMessages);
var tag = Intent.GetParcelableExtra(NfcAdapter.ExtraTag) as Tag;
var id = System.Text.Encoding.Default.GetString(tag.GetId());
var msg = (NdefMessage)rawMessages[0];
var tagMessage = msg.GetRecords()[0];
var content = Encoding.ASCII.GetString(tagMessage.GetPayload());
// Call another function with Tag ID and contents here
}
}
}
此代码用于检索标记ID和内容,但仅限于应用未固定的情况。如果应用已固定,则无法显示NFC服务窗口,并忽略该标记。
任何人都可以建议解决这个问题。由于受到限制,我不想使用NFCforms NUGET包。
TIA。皮特
答案 0 :(得分:0)
鉴于您希望您的应用程序在Kiosk模式(如方案)中运行(限制用户访问设备),更好的选择可能是使用Zebra's Enterprise Home Screen。
通过这种方式,您可以锁定设备,限制对通知的访问,禁用键盘锁等(如果需要)。您仍然可以添加可能对用户有用的其他应用程序。
在EHS'配置您可以指定自动启动您的应用,以便在设备启动后立即启动。
如果您只需拥有自己的应用,则可以选择安装设备策略控制器并使用Marshmallow for the COSU (Corporate Owned - Single Use) devices中引入的taskLockMode,这是一种比屏幕固定更好的解决方案。
如果仍有问题,可以尝试在Zebra's developer forum上提问。
免责声明:我为Zebra Technologies工作。