0

Xamarin.Formsアプリケーションを開発しています。 Android側では、 "android.intent.action.MY_PACKAGE_REPLACED"インテント用のブロードキャストレシーバーを実装しようとしています。更新後にGCMに登録されていることを確認できます。私は、コードがヒットしたことを確認するために通知を出しますが、表示されません。何かアドバイス?コードは以下の通りです。私はVSからAndroid 6.0のSamsung Galaxy s5に導入しています。"android.intent.action.MY_PACKAGE_REPLACED"ブロードキャストレシーバの実装がXamarinで動作しません

[BroadcastReceiver(Permission = "com.google.android.c2dm.permission.SEND", Exported = true)] 
    [IntentFilter(new string[] { Intent.ActionMyPackageReplaced }, DataPath = "<package name>", DataScheme = "package")] 
    public class GCMUpdateReceiver : GcmReceiver 
    { 
     public override void OnReceive(Context context, Intent intent) 
     { 
      Bundle bundle = intent.Extras; 
      var notificationBuilder = new Notification.Builder(Application.Context) 
       .SetSmallIcon(Resource.Drawable.icon) 
       .SetContentTitle("OnReceive") 
       .SetContentText("ActionMyPackageReplaced") 
       .SetAutoCancel(true); 

      var notificationManager = (NotificationManager)Application.Context.GetSystemService(Context.NotificationService); 
      notificationManager.Notify(0, notificationBuilder.Build()); 
     } 

    } 

注:私は、プロジェクトが構築されていることを確認する前にきれいにしているので、更新とみなす必要があります。

答えて

0

私は他のブロードキャストレシーバと組み合わせてIntent.ActionPackageReplacedを探し、それが(私が受け取ったことのないActionMyPackageReplacedを使用する代わりに)私のパッケージが置き換えられたことを確認するためにチェックしました。フィルタは次のようになります。

[BroadcastReceiver(Permission = "com.google.android.c2dm.permission.SEND", Exported = true)] 
[IntentFilter(new string[] { "com.google.android.c2dm.intent.RECEIVE", "com.google.android.c2dm.intent.REGISTRATION", "com.google.android.gcm.intent.RETRY" }, Categories = new string[] { "<package name>" })] 
[IntentFilter(new string[] { Intent.ActionPackageReplaced }, Categories = new string[] { "<package name>", Intent.CategoryDefault }, 
関連する問題