2017-12-11 2 views
0

Der folgende Code gibt mir einen Null-Ausnahmefehler, wenn ispluggedin aufgerufen wird. Außer dem Fehler gibt es keine Diagnoseausgabe. Ich versuche, den Status der android Batterie zu erhalten:xamarin forms intent gibt Null-Ausnahme für Batteriestatus zurück

using Xamarin.Forms; 
using ClockXF.Droid; 
using Android.Content; 
using Android.OS; 
using Android.App; 
using Android.Widget; 
using System.Threading.Tasks; 

[assembly: Dependency(typeof(Texaco2))] 
namespace ClockXF.Droid 
{ 
    public class Texaco2 : Ipower 
    { 
     public Context context1 { get; private set; } 

     public string ispluggedin() 
     { 
      IntentFilter ifilter = new IntentFilter(Intent.ActionBatteryChanged); 
      Intent batteryStatus = context1.RegisterReceiver(null, ifilter); 
      int level = batteryStatus.GetIntExtra(BatteryManager.ExtraPlugged, -1);   
      string s = level.ToString(); 
      return s; 
     } 
    } 
} 
+1

welche Linien die Ausnahme verursacht? – Jason

+1

Haben Sie nach dem Objekt context1 auf Null gecheckt? – Grantly

+0

Es ist die Context1-Zeile, die die Ausnahme verursacht ... Was ist das Problem mit Context1? Wie lege ich den Kontext für RegistrationReceiver fest? – pollaris

Antwort

0

der entsprechende Kontext ist Android.App.Application.Context für RegisterReceiver. Dokumentation auf der Batterie ist hier:

https://developer.android.com/training/monitoring-device-state/battery-monitoring.html

Der Arbeitscode ist wie folgt:

using Xamarin.Forms; 
using ClockXF.Droid; 
using Android.Content; 
using Android.OS; 

[assembly: Dependency(typeof(Texaco2))] 
namespace ClockXF.Droid 
{ 
    public class Texaco2 : Ipower 
    {  
     public string ispluggedin() 
     { 
      IntentFilter ifilter = new IntentFilter(Intent.ActionBatteryChanged); 
      Intent batteryStatus = Android.App.Application.Context.RegisterReceiver(null, ifilter); 
      int pluggedin = batteryStatus.GetIntExtra(BatteryManager.ExtraPlugged, -1);   
      string s = pluggedin.ToString(); 
      return s; 
     } 
    } 
}