Xamarin nfc固定应用程序

时间:2017-04-24 12:53:35

标签: c# android xamarin xamarin.android nfc

我正在将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。皮特

1 个答案:

答案 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工作。