2016-09-15 17 views
0

ブロードキャストを受信して​​いないBroadcastReceiverがあります。Xamarinブロードキャストレシーバーは受信しません

[BroadcastReceiver] 
[IntentFilter(new[] { _broadcastId })] 
public class CallBroadcaster : BroadcastReceiver, IAcceptCallService 
{ 
    const string _broadcastId = "headExtension.droid.services.AcceptIndividualCall"; 

    public CallBroadcaster() 
    { 
    } 

    Activity CurrentActivity 
    { 
     get { return Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity; } 
    } 

    public void Send() 
    { 
     var intent = new Intent(_broadcastId); 
     intent.PutExtra(Intent.ExtraText, "Accept"); 
     intent.SetType("text/plain"); 

     CurrentActivity.SendBroadcast(intent); 
    } 

    public override void OnReceive(Context context, Intent intent) 
    { 
     Console.WriteLine("Received"); 
    } 
} 

OnReceiveメソッドは決してヒットしません。 xamarinで放送受信機を正しく実装するにはどうすればいいですか?

ここにプロジェクトが1つしかないので、別のプロジェクトからインテントを受け取ることに関する質問と重複していません。

+0

を:

ソリューションは、次のようにインテントフィルタに=「プレーンテキスト/」DataMimeTypeを追加することです。 – matthewrdev

+0

@matthewrdevすでに含まれているコードのsend関数を参照してください – trampster

+0

@SushiHangover他の質問は別のプロジェクトからやっていることです。私は1つのプロジェクトしか持っていません。また、答えは役に立たない。 – trampster

答えて

0

私はそれが働いた: 問題は、データ型にあった。インテントは "text/plain"で送信され、受信用IntentFilterは一致しませんでした。放送をトリガされたコードを記載してください

[BroadcastReceiver] 
[IntentFilter(new[] { _broadcastId }, DataMimeType="text/plain")] 
public class CallBroadcaster : BroadcastReceiver, IAcceptCallService 
{ 
    const string _broadcastId =  "headExtension.droid.services.AcceptIndividualCall"; 

    public CallBroadcaster() 
    { 
    } 

    Activity CurrentActivity 
    { 
     get { return Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity; } 
    } 

    public void Send() 
    { 
     var intent = new Intent(_broadcastId); 
     intent.PutExtra(Intent.ExtraText, "Accept"); 
     intent.SetType("text/plain"); 

     CurrentActivity.SendBroadcast(intent); 
    } 

    public override void OnReceive(Context context, Intent intent) 
    { 
     Console.WriteLine("Received"); 
    } 
} 
関連する問題