c# - 从 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。
请帮我解决这个问题。我陷入了这个问题。
解决方案
首先你有权限android.permission.REORDER_TASKS
吗?
似乎 TaskID 道具中的主要问题,你能检查它返回什么?
尝试使用来自MainActivity
.
另外我注意到你打电话给你的班级MyBootReceiver
,但它不是引导接收器=)
推荐阅读
- git - 这4个git.exe在Windows OS下的具体区别是什么?
- javascript - 从数组中删除元素时未定义索引
- ios - 使用不同版本的 Xcode 创建的分支在 git 中真的不同吗?
- android - 从十六进制到 UUID 格式的隐蔽 BLE 服务分配编号
- sql - 如何使用 sqlite3 构造我的查询以获得一致的结果?
- amazon-web-services - 如何处理红移负载中的换行符?
- r - 为时间序列条形图中的日期添加更新菜单
- java - 可以用 CSS 设置 jsoup 输出的样式吗?
- php - 在 MySQL 表的列中查找值并打印返回
- c++ - C++ - 通过宏定义命名空间 - 如何在标题中使用它