我正在开发一个Xamarin Android应用程序,我需要能够使用Passes(例如PassKit传递(JSON))。我需要能够列出ListVew中的所有传递,并能够打开并显示传递。也可以将它们保存到诸如PassWallet或Pass2u之类的钱包中。我不需要创建它们,只需查看它们,然后将它们保存到钱包或丢弃它们。
似乎有一个示例Xamarin iOS应用程序正是我需要的here,但当然我需要能够在Xamarin Android中执行此操作。
我已经研究了几个小时,但不知道如何实现我的需要。 JSON.net似乎是去阅读传球的方式,但这是我设法得到的。一些例子会很棒。有人可以帮忙吗?
答案 0 :(得分:3)
要将传递添加到PassWallet,您可以使用以下内容:
private static boolean launchPassWallet(Context applicationContext, Uri uri, boolean launchGooglePlay) {
if (null != applicationContext) {
PackageManager packageManager = applicationContext.getPackageManager();
if (null != packageManager) {
final String strPackageName = "com.attidomobile.passwallet";
Intent startIntent = new Intent();
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startIntent.setAction(Intent.ACTION_VIEW);
Intent passWalletLaunchIntent = packageManager
.getLaunchIntentForPackage(strPackageName);
if (null == passWalletLaunchIntent) {
// PassWallet isn't installed, open Google Play:
if (launchGooglePlay) {
String strReferrer = "";
try {
strReferrer = "&referrer=" + URLEncoder.encode(uri.toString(), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
strReferrer = "";
}
try {
startIntent.setData(Uri.parse("market://details?id=" + strPackageName + strReferrer));
applicationContext.startActivity(startIntent);
} catch (android.content.ActivityNotFoundException anfe) {
// Google Play not installed, open via website
startIntent.setData(Uri.parse("http://play.google.com/store/apps/details?id=" + strPackageName + strReferrer));
applicationContext.startActivity(startIntent);
}
}
} else {
final String strClassName = "com.attidomobile.passwallet.activity.TicketDetailActivity";
startIntent.setClassName(strPackageName, strClassName);
startIntent.addCategory(Intent.CATEGORY_BROWSABLE);
startIntent.setDataAndType(uri, "application/vnd.apple.pkpass");
applicationContext.startActivity(startIntent);
return true;
}
}
}
return false;
}
一个示例电话是:
launchPassWallet(getApplicationContext(),Uri.parse("http://test.attidomobile.com/PassWallet/Passes/AttidoMobile.pkpass"), true);
如果您在本地拥有该文件,也可以使用file:// URL。
要在列表中显示它们,您需要解压缩.pkpass文件,然后解析相关字段的JSON。