我正在Xamarin中编写一个跨平台的解决方案,并且即将为第三方集成添加一个母项目(例如,其他需要在Android上使用Intent与我的应用集成的Android方)。 / p>
但是我想保持我现在“干净”的跨平台设置,只需添加一个带有第三方集成代码的新Android类库。但是,我似乎无法将我的第三方集成项目中的BroadcastReceiver包含在我的“主要”Android应用程序项目中。
我已经添加了对第三方集成项目的引用,但这显然还不够......我可以在主Android-app项目中添加我的BroadcastReceiver,这样我就可以了,但是我真的很想保留第三方的东西,因为我可以很好地在未来为其他目的添加其他集成机制,然后又想把它们放在另一个项目中。
有什么建议吗?目前,在编译主android项目时,第三方项目似乎甚至没有自动编译。
EDIT;
我的BroadcastReceiver将属性用作“推荐”;
[BroadcastReceiver(Enabled = true)]
[IntentFilter(new[] { "se.millsys.integration.MyIntegrationIntent" })]
public class IntegrationBroadcastReceiver : BroadcastReceiver
{
private static string DEBUG_TAG = "IntegrationBroadcastReceiver";
public override void OnReceive(Context context, Intent intent)
{
}
}
答案 0 :(得分:2)
├── DroidMainApp
│ └── MyBroadcastReceiver (A Project level reference to DroidMainApp)
├── ADifferentApp
com.sushihangover.toaster
com.sushihangover.toaster.receiver
Enabled
和Exported
[BroadcastReceiver(Name = "com.sushihangover.toaster.receiver", Enabled = true, Exported = true)]
public class Toaster : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Toast.MakeText(context, "Go make some toast", ToastLength.Long).Show();
Log.Info("SO", "Go make some toast");
}
}
BroadcastReceiver
:Explicit
意图var toasterIntent = new Intent();
toasterIntent.SetClassName("com.sushihangover.toaster", "com.sushihangover.toaster.receiver");
var pendingIntent = PendingIntent.GetBroadcast(this, 0, toasterIntent, PendingIntentFlags.CancelCurrent);
var alarmService = (AlarmManager)GetSystemService(Context.AlarmService);
alarmService.SetRepeating(AlarmType.Rtc, 1000, 60000, pendingIntent);