首页 > 解决方案 > 从 xamarin android 中的第三方应用程序接收响应后,将 android 应用程序置于前台

问题描述

如何在 Xamarin Android 中广播接收器的 OnReceive 方法上接收一些数据时使用 moveTaskToFront。

我的示例代码如下:

[BroadcastReceiver(Enabled = true, Exported = false)]
[IntentFilter(new[] { "android.intent.action.genius.pos.result" })]
public class MyBootReceiver : BroadcastReceiver
{

 [get: Android.Runtime.Register("getTaskId", "()I", "GetGetTaskIdHandler")]
 public virtual Int32 TaskId { get; }
 public PaymentResponse paymentResponse;

 public MyBootReceiver() // public constructor
 {
 }

    public override void OnReceive(Context context, Intent intent)
    {
        String result = intent.GetStringExtra("result");
        String description = intent.GetStringExtra("description");

        if (result != null && description != Defines.POSAction.InitiateKeyedEntry.ToString())
            paymentResponse = JsonConvert.DeserializeObject<PaymentResponse>(result);

        if (description != Defines.POSAction.InitiateKeyedEntry.ToString())
        {
            ActivityManager activityManager = (ActivityManager)context.GetSystemService(Context.ActivityService);
            activityManager.MoveTaskToFront(TaskId, MoveTaskFlags.WithHome);
        }
    }

    public void showResultDialog(String msg, Context context)
    {
        AlertDialog.Builder builder;
        builder = new AlertDialog.Builder(context);
        builder.SetTitle("Result").SetMessage(msg).Show();
    }
}

我在 OnReceive 方法中收到响应,但我无法将我的应用程序带到前台。我正在使用 Intent 调用第三方应用程序进行付款。第三方应用程序是 Cayan Genius Mini。

请帮我解决这个问题。我陷入了这个问题。

标签: c#xamarin

解决方案


首先你有权限android.permission.REORDER_TASKS吗?

似乎 TaskID 道具中的主要问题,你能检查它返回什么?

尝试使用来自MainActivity.

另外我注意到你打电话给你的班级MyBootReceiver,但它不是引导接收器=)


推荐阅读