Xamarin Android显示Google Play成就时遇ActivityNotFoundException
问题修复:Xamarin Android 显示Google Play成就列表时的ActivityNotFoundException
根本原因
你的代码在OnSuccess方法里犯了关键错误:传递给StartActivityForResult的是intentObject.GetType()(这是Intent的类型Class),而非实际的Intent对象本身。系统误以为你要启动名为android.content.Intent的自定义Activity,这个类显然不存在,因此抛出异常。
修复方案
- 无需修改AndroidManifest.xml:显示成就的Activity由Google Play Games服务提供,不属于你的应用,不需要在清单中声明任何额外内容。
- 修正OnSuccess方法代码:将
Java.Lang.Object强制转换为Intent对象,再启动该Intent:
public void OnSuccess(Java.Lang.Object intentObject) { var achievementsIntent = intentObject as Intent; if (achievementsIntent != null) { _activity.StartActivityForResult(achievementsIntent, 1234); } }
若你能确定返回对象的类型安全,也可以直接强制转换:
public void OnSuccess(Java.Lang.Object intentObject) { _activity.StartActivityForResult((Intent)intentObject, 1234); }
更简洁的写法(推荐)
在Xamarin中,你可以用异步/await替代监听器,代码更易读维护:
public static async Task ShowAchievementsListAsync(Activity activity) { var intent = await PlayGames.GetAchievementsClient(activity).GetAchievementsIntentAsync(); activity.StartActivityForResult(intent, 1234); }
内容的提问来源于stack exchange,提问作者EstevaoLuis
相关产品推荐
相关产品推荐

