私はあるインテントを開くことができるかどうかをテストする方法を探しています。私は、アクションがin this exampleのように利用可能かどうかをテストする方法を知っています。しかし、Intent.ACTION_VIEWのようなアクションは、提示されたURIに応じて異なるアプリケーションを開く可能性があるため、十分ではありません。場合インテントが利用可能かどうかのテスト
ポイント:
url = "ftp://192.168.1.1"
url = "http://192.168.1.1"
のHTTP URLはかなり安全である:デフォルトのWebブラウザで開きますこと
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url);
startActivity(i);
これは以下のような、異なるURLの異なるアプリを開きます。 。 ftpのURLはそうではありません。ユーザーにはftpクライアントがインストールされているかどうかわかりません(私のケースでは、AndFTPはクライアントとして想定されています。最も一般的なクライアントのようです。/pwをクライアントに送信するため、これはアプリ固有のものでなければなりません)。
ここでは、アクションが利用可能であるかどうか(httpが利用可能な場合はリンクされたコードはtrueを返しますが、ftpは使用できません)だけでなく、特定の種類を処理できるアプリがあるかどうかをテストしたいと思います。特定のアプリのテストも受け入れられます。
最後に、これは、1つ以上のURIを選択できるコードに組み込む必要があります。これにより、可能な限り最初のコードを開き、URIを開くことができない場合はエラーコードを返します。この擬似コードのようなもの:だから今
success = false;
for (Uri uri : uris) {
if (actionAvailable(uri)) {
// set up intent
startActivity(intent);
success = true;
break;
}
}
return success;
私はこの問題をよく理解していません。インテントフィルタは、httpやftpをサポートしているかどうかを示す必要があります。投稿した最初のメソッドのメソッドはうまくいくと思いますか? http://developer.android.com/guide/topics/manifest/data-element.html#scheme – mibollma
問題は、インテントが利用可能で、処理されているかどうかを適切にテストすることです。 ftpとhttp(さらに多くのもの)は、Intent.ACTION_VIEWによって処理されます。 startActivityのエラーをキャッチすることは、方法ではありません。 – Wouter