处理Android中的未知URI方案(比特币示例)

前端之家收集整理的这篇文章主要介绍了处理Android中的未知URI方案(比特币示例)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想在Android应用程序的PreferenceScreen中集成“通过比特币捐赠”按钮.

有一些用于Android的比特币客户端,比特币维基定义了一个应该用于BTC支付的URI scheme.

我试过以下代码

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;
            }
        });

withou在手机上安装了BTC.我试图用以下URI启动意图:比特币: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客户端时如何处理?

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

最佳答案

How do I check that a certain URI scheme can be handled at least by one application? (if more,I suppose a choice screen)

或者:

>只是捕获ActivityNotFoundException,或
>使用PackageManager和resolveActivity()或queryIntentActivities()查看是否有任何与您的Intent匹配的内容

With reference to Bitcoin but without reference to that specific client,what should the best Intent be when paying via Bitcoin?

你不得不向比特币应用程序的作者提出质疑,或鼓励他们采用Uri标准,如果他们还没有这样做的话.

根据您列出的应用程序的清单,您的Intent看起来应该可以工作.至少,使用AppXplore,我看到一个用比特币方案的ACTION_VIEW for Uri值的活动.因此,您可能希望联系此应用程序的开发人员,看看您是否可以准确确定集成的错误位置.

How to handle the case when no BTC client is installed?

提议将用户带到Play商店,通过市场安装一些您喜欢的比特币客户端:Uri.

猜你在找的Android相关文章