Android アプリケーションの PreferenceScreen に「ビットコインで寄付」ボタンを統合したいと考えています。
Android 用のビットコイン クライアントがいくつか実行されており、ビットコイン ウィキでは、 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 スキームが少なくとも 1 つのアプリケーションで処理できることを確認するにはどうすればよいですか? (それ以上なら選択画面かな)
- ビットコインを参照して、特定のクライアントを参照せずに、ビットコインで支払う場合の最善の意図は何ですか? BTC クライアントがインストールされていない場合の対処方法は?
[編集]: 電話のバックアップを台無しにして、Bitcoin Wallet アプリがインストールされていないのにインストールされていると推定したため、質問は間違っています。