2017-04-24 144 views
0

我正在實施NFC到Xamarin Forms現有的應用程序,最初是爲Zebra TC51(android 6.0)。Xamarin nfc固定的應用程序

應用程序必須固定,以便用戶無法訪問設備的其餘部分。

在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。 Pete

+0

你是什麼意思的「應用程序被固定」? –

+0

它使用StartLockTask()命令全屏顯示。 –

回答

0

鑑於您希望讓應用程序在像場景(限制用戶訪問設備)的自助服務終端模式下運行,更好的選擇可能是使用Zebra's Enterprise Home Screen
通過這種方式,您可以鎖定設備,限制對通知的訪問,禁用鍵盤鎖等等(如果需要)。而且您仍然可以添加對用戶有用的其他應用。

在EHS的配置中,您可以指定自動啓動您的應用,以便在設備啓動時立即啓動。

如果您只需要您的應用程序,比屏幕固定更好的解決方案可能會安裝設備策略控制器,並使用已在棉花糖for the COSU (Corporate Owned - Single Use) devices中引入的taskLockMode。

如果仍然有問題,您可以嘗試詢問Zebra's developer forum的問題。

聲明:我爲Zebra Technologies工作。

+0

謝謝pfmaggi, 是的,我可以使用企業主屏幕或SOTI(正如我們以前使用的那樣,因爲它是跨平臺的,因此更易於維護)。 但我真正需要的是擺脫醜陋的黑色NFC服務屏幕出現,每當我讀標籤。這看起來會更好,並能解決問題。 你能建議如何做到這一點? –