6

我想在 Android 应用程序的 PreferenceScreen 中集成一个“通过比特币捐款”按钮。

有一些适用于 Android 的比特币客户端正在运行,比特币 wiki 定义了一个应该用于 BTC 支付的URI 方案。

我试过下面的代码

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 启动意图: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 方案。

  • 如何检查某个 URI 方案是否至少可以由一个应用程序处理?(如果更多,我想是一个选择屏幕)
  • 参考比特币但不参考任何特定客户,通过比特币支付时最好的意图是什么未安装 BTC 客户端时如何处理?

[编辑]:这个问题是错误的,因为我搞砸了我的手机备份,并假定比特币钱包应用程序安装时没有安装。

4

1 回答 1

4

如何检查某个 URI 方案是否至少可以由一个应用程序处理?(如果更多,我想是一个选择屏幕)

任何一个:

  • 抓住ActivityNotFoundException, 或

  • 使用PackageManagerandresolveActivity()queryIntentActivities()查看是否有任何匹配您的Intent

参考比特币但不参考特定客户,通过比特币支付时最好的意图是什么?

你必须向比特币应用程序的作者提出这个问题,或者鼓励他们采用Uri标准,如果他们还没有这样做的话。

根据您列出的应用程序清单,您Intent看起来应该可以工作。至少,在使用AppXplore时,我看到了一个ACTION_VIEW用于Uri值的活动,其方案为bitcoin. 因此,您可能希望联系此应用程序的开发人员,看看您是否可以准确确定您的集成出错的地方。

未安装 BTC 客户端时如何处理?

提议通过market: Uri.

于 2012-12-14T22:00:14.657 回答