2017-12-11 4 views
0

다음 코드는 ispluggedin이 호출 될 때 null 예외 오류를 발생시킵니다. 오류 이외의 진단 출력은 없습니다.xamarin 폼 인 텐트는 배터리 상태에 대해 null 예외를 반환합니다.

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

하는 선이 예외가 발생 다음과 같이

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

실무 코드는? – Jason

+1

context1 객체에서 null을 확인 했습니까? – Grantly

+0

예외를 일으키는 context1 행 ... context1의 문제점은 무엇입니까? RegisReceiver에 대한 컨텍스트를 어떻게 설정합니까? – pollaris

답변

0

적절한 컨텍스트가 RegisterReceiver에 대한 Android.App.Application.Context이다 : 나는 안드로이드 배터리의 상태를 얻기 위해 노력하고 있어요. 배터리에 대한 문서는 여기에 있습니다 :

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; 
     } 
    } 
} 
관련 문제