我想在Android应用程序的PreferenceScreen中集成“通过比特币捐赠”按钮。
有一些适用于Android的比特币客户端,比特币维基定义了URI scheme,应该用于BTC付款。
我尝试过以下代码
findPreference(getString(R.string.preference_donateBitcoin)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
String url = getString(R.string.pref_donateBitcoin_uri);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
return false;
}
});
在手机上安装了BTC。我尝试使用以下URI启动intent:bitcoin:19iSEgNkJnEUtNDuuTkkZrU44PVKYMVfhz?amount=1
期待Android告诉我没有安装处理程序。
相反,我得到了ActivityNotFoundException
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=bitcoin:19iSEgNkJnEUtNDuuTkkZrU44PVKYMVfhz?amount=1 }
我的问题是正确处理(读取“最佳实践”)设备未知的URI方案。
[编辑]:这个问题是错误的,因为我弄乱了我的手机备份,并推测比特币钱包应用程序安装时没有。
答案 0 :(得分:4)
如何检查某个URI方案是否至少可以由一个应用程序处理? (如果更多,我猜一个选择屏幕)
要么:
抓住ActivityNotFoundException
或
使用PackageManager
和resolveActivity()
或queryIntentActivities()
查看是否有符合您Intent
参考比特币,但没有提及该特定客户,通过比特币支付时,最佳意图应该是什么?
你必须要求比特币应用程序的作者提出质疑,或者鼓励他们采用Uri
标准,如果他们还没有这样做的话。
根据您列出的应用程序的清单,您的Intent
看起来应该有效。至少,使用AppXplore,我看到ACTION_VIEW
的{{1}}值的活动,其Uri
方案为bitcoin
。因此,您可能希望联系此应用程序的开发人员,看看您是否可以准确确定集成的错误位置。
如果没有安装BTC客户端,如何处理?
提议通过market:
Uri
将用户带到Play商店以安装您喜欢的某个比特币客户端。