我想在Android应用程序的PreferenceScreen中集成“通过比特币捐赠”按钮。
有一些用于Android的比特币客户端运行,并且比特币Wiki定义了一个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方案(请参阅“最佳实践”)。
[编辑]:这个问题是错误的,因为我弄乱了手机备份,并假定未安装时已安装了Bitcoin Wallet应用程序。
最佳答案
任何一个:
ActivityNotFoundException
或PackageManager
和resolveActivity()
或queryIntentActivities()
查看是否有与您的Intent
匹配的文件您将不得不问比特币应用程序的作者有问题,或者鼓励他们采用
Uri
标准(如果尚未这样做)。根据您列出的应用程序的 list ,
Intent
看起来应该可以工作。至少,使用AppXplore,我看到了一个使用ACTION_VIEW
方案的Uri
值的bitcoin
Activity 。因此,您可能希望与该应用程序的开发人员联系,以查看是否可以准确确定集成问题出在哪里。提议通过
market:
Uri
将用户带到Play商店安装一些您喜欢的比特币客户端。关于android - 在Android中处理未知的URI方案(比特币示例),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13886804/