Xamarin.Forms应用程序中BroadcastReceiver中的Application.Current.Properties

时间:2019-05-10 07:59:48

标签: xamarin.forms xamarin.android broadcastreceiver

我在Xamarin.Forms应用程序的Application.Current.Properties中保存了一些首选项,并具有需要这些首选项的BroadcastReceiver。问题是Xamarin.Forms没有在BroadcastReceiver中初始化,因此我需要一种方法来访问本机Xamain.Android中的那些变量。有可能吗?

2 个答案:

答案 0 :(得分:1)

  

我需要一种在本地Xamain.Android中访问这些变量的方法

您可以使用 DependencyService ,此功能使Xamarin.Forms应用程序可以执行本机应用程序可以执行的任何操作。

以下是使用Android Toast以共享代码显示消息的示例:

1。使用共享代码创建接口:

public interface IToast
 {
    void LongAlert(string message);//the parameter could pass to the native platform
    void ShortAlert(string message);
 }

2.Android实现:

[assembly: Dependency(typeof(ToastAndroid))]
namespace Demo.Droid
{
  class ToastAndroid : IToast
   {
     public void LongAlert(string message)
      {
        Toast.MakeText(Android.App.Application.Context, message, ToastLength.Long).Show();
      }            

     public void ShortAlert(string message)
      {           
        Toast.MakeText(Android.App.Application.Context, message, ToastLength.Short).Show();
       }
   }
}

3。用共享代码调用:

DependencyService.Get<IToast>().ShortAlert("short toast);
DependencyService.Get<IToast>().LongAlert("long toast);

DependencyService

答案 1 :(得分:0)

我自己找到了解决方案。 我使用Xamarin.Forms源(找到here)编写了一个函数,该函数从与在Forms应用程序中写入的文件相同的文件中读取值。就像魅力一样。