6

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 アプリがインストールされていないのにインストールされていると推定したため、質問は間違っています。

4

1 に答える 1

4

特定のURIスキームが少なくとも1つのアプリケーションで処理できることを確認するにはどうすればよいですか?(それ以上の場合は、選択画面だと思います)

また:

  • キャッチするだけActivityNotFoundException、または

  • PackageManagerおよびresolveActivity()またはを使用して、queryIntentActivities()一致するものがあるかどうかを確認しますIntent

ビットコインを参照しますが、その特定のクライアントを参照しない場合、ビットコインを介して支払う場合の最善の意図は何ですか?

Uriまだ行っていない場合は、ビットコインアプリの作成者に質問するか、標準を採用するように勧める必要があります。

リストしたアプリケーションのマニフェストによると、動作Intentするはずです。少なくとも、AppXploreを使用すると、スキームが。の値のアクティビティが表示さACTION_VIEWれます。したがって、このアプリの開発者に連絡して、統合のどこが間違っているのかを正確に判断できるかどうかを確認することをお勧めします。Uribitcoin

BTCクライアントがインストールされていない場合の対処方法は?

を介して、ユーザーをPlayストアに連れて行き、好きなビットコインクライアントをインストールすることを提案しますmarket: Uri

于 2012-12-14T22:00:14.657 に答える