2017-09-21 1 views
0

Ich habe eine Xamarin App und ich möchte, dass sie einen Zugangscode hat, um die App zu betreten. Ich habe versucht, diese Komponente, https://components.xamarin.com/view/lock-screen zu verwenden, aber ich weiß nicht, warum es nicht funktioniert.Implementieren eines Passworts xamarin android

In meiner MainActiviy.cs-Datei (im Droid Projekt) Ich habe versucht, das Hinzufügen dieses:

protected override void OnStart() 
    { 
     base.OnStart(); 
     Locker.OnStart(this); 
    } 

    protected override void OnPause() 
    { 
     base.OnPause(); 
     Locker.OnPause(this); 
    } 

Doch die App läuft genauso normal, kein Bildschirm sperren. Ich versuchte, die andere Methode als auch durch ein Passwort-geschützte Aktivität von Subklassifizieren PasscodeProtectedActivity erstellen: (der Code ist das gleiche wie das, was in der MainActivity Klasse war)

public class MyProtectedActivity : PasscodeProtectedActivity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 

     MobileAds.Initialize(ApplicationContext, "myId"); 
     TabLayoutResource = Resource.Layout.Tabbar; 
     ToolbarResource = Resource.Layout.Toolbar; 

     base.OnCreate(bundle); 

     global::Xamarin.Forms.Forms.Init(this, bundle); 
     LoadApplication(new App()); 
    } 
} 

diese verwenden, bekomme ich Fehler sagen: „Der Name TabLayoutResource existiert nicht“,‚Der Name ToolbarResource existiert nicht‘und‚Der Name LoadApplication nicht‘existiert

Die MainActivity Klasse dieses

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity

verwendet, die kann ich nicht machen mit. Wie kann ich es funktionieren lassen?

EDIT:

Nach der Antwort des @ GraceFeng, habe ich Passcode und verwalten die hallo-Taste zu zeigen, erhalten (wie im Beispielcode ausgeführt wird) jedoch, wenn ich die Taste drücken, anstatt zu zeigen, der Passcode-Bildschirm, erhalte ich eine System.InvalidCastException an dieser Linie

((LockLogic)Application.Context).PasscodeManager.Show(this);

Hinweis: LockLogic ist das Äquivalent der Datei mit dem Namen App.cs in der Probe

+0

Dies funktioniert wahrscheinlich nicht auf einer Xamarin Forms App. Es scheint, dass die PasscodeProtectedActivity eine native Android-Aktivität ist. Sobald LoadApplication() aufgerufen wird, wird die Xamarin Forms UI dem Benutzer angezeigt. – Joagwa

Antwort

0

diese verwenden, erhalte ich Fehler sagen: „Der Name TabLayoutResource nicht existiert“, „Der Name ToolbarResource existiert nicht“ und „Der Name LoadApplication existiert nicht“

Diese Eigenschaften TabLayoutResource und ToolbarResource zusammen mit der Methode LoadApplication werden in der FormsAppCompatActivity erstellt, die eine Unterklasse von AppCompatActivity ist. Es ist NICHT vorgeschlagen, die MainActivity zu ändern, um von Ihrem PasscodeProtectedActivity zu erben, wenn Sie eine Sperrbildschirmansicht anzeigen möchten, können Sie versuchen, eine ContentView in XF anzupassen.

Sie können sich auf diesen Fall beziehen: Navigate from Xamarin Forms to Xamarin Native.

Dann können Sie hier auf den Quellcode von XamarinPasscode verweisen, versuchen, die Sperrbildschirmansicht von Android-Layout-Ressource aufzublasen und den Logikcode in Ihrem ViewRenderer zu implementieren.

+0

Hallo danke für die Antwort. Ich versuche das, aber ich bin verwirrt, wie ich die Sperrbildschirmansicht "aufblasen" würde. Ich folgte Ihrem Link und erstellte eine neue Klasse im PCL-Projekt namens LockScreen.cs und im Droid-Projekt eine neue Layout-Datei und einen LockScreenRenderer.cs file – stackman

+0

Ich habe es geschafft, die Hello - Schaltfläche zu erhalten (wie im Beispielcode), aber wenn ich die Taste drücke, statt den Passcode - Bildschirm zu sehen, bekomme ich eine System.InvalidCastException an dieser Zeile '((LockLogic) Application.Context) .PasscodeManager.Show (this); ' Hinweis: LockLogic ist das Äquivalent der Datei namens App.cs im Beispiel, ich habe bereits eine App.cs in meinem PCL-Projekt, wenn ich eine andere App hinzufüge .cs im Droid-Projekt bekam ich lustige Fehler – stackman

Verwandte Themen