这是我在这个论坛上的第一篇文章,所以有关如何使问题更容易理解/可阅读的任何提示,我们表示赞赏。
我在做什么?
我正在使用Xamarin Forms创建我的第一个应用程序,我有两个项目,PCL(可移植类库)和Android。我的Android项目接收来自特定号码的传入SMS并将其保存为字符串。我想要实现的是,通过使用MessagingCenter,将我的Android项目中的字符串发送到我的PCL。
我的问题:
我已经看到了很多关于这个问题的线索,但是我有些遗漏。因为我是这个论坛的新手,所以我不能写评论,所以我必须创建自己的问题。我来告诉你一些代码。 (parsedsms
是包含SMS的字符串)
SmsReceiver.cs(在我的Android项目中)
MessagingCenter.Send<SmsReceiver, string> (this, "ParsedSmsReceived", parsedsms);
MissionPage.xaml.cs(在我的PCL项目中)
MessagingCenter.Subscribe<SmsReceiver, string> (this, "ParsedSmsReceived",
(sender, arg) =>
{
string message = arg;
});
这是我在Stackoverflow上的另一个线程上找到的示例。我的问题是无法从PCL访问parsedsms
。如何从PCL访问SmsReceiver类?你不能在PC上添加PCL的引用(因为它是我猜的库),只是反过来。
答案 0 :(得分:2)
正如@Jason在评论中写道,解决方案是使用for (int i = 0; i <= 9; i++)
{
for (int i2 = 0; i2 <= 7; i2++)
{
string tbName = "textBox" + i.ToString() + i2.ToString();
[buttonName].Text="someting";
}
}
代替Object
,如下所示:
SmsReceiver.cs
SmsReceiver
MissionPage.xaml.cs
MessagingCenter.Send<Object, string> (this, "ParsedSmsReceived", parsedsms);
这很好用,但如果MessagingCenter实际上是正确的方法则是另一个问题。正如@Csharpest使用DependencyService评论可能是一个更好的解决方案。
答案 1 :(得分:0)
该界面可以更好地管理消息。
PCL中的ISmsReceiver.cs
public interface ISmsReceiver {}
在Android中SmsReceiver.cs
[assembly: Dependency(typeof(SmsReceiver ))]
namespace App1.MobileApp.Droid
{
public class SmsReceiver : BroadcastReceiver, ISmsReceiver
{
public override void OnReceive(Context context, Intent intent)
{
MessagingCenter.Send<ISmsReceiver, string> (this, "ParsedSmsReceived", parsedsms);
}
}
}
PCL中的MissionPage.xaml.cs
MessagingCenter.Subscribe<ISmsReceiver, string> (this, "ParsedSmsReceived",
(sender, arg) =>
{
string message = arg;
});