質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

3808閲覧

Androidでブラウザからftpサーバにアクセス

k126578ta

総合スコア16

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2019/01/06 04:43

前提・実現したいこと

Android Studioを使い始めて3か月の初心者です。
現在、intentを使い、https://~のウェブページをブラウザで表示することができました。

今回実現したいこととしては、ブラウザからftpサーバにアクセスしたいということです。具体的には、ftp://ipaddress/~をintentに渡すことで、ブラウザからftpサーバにアクセスしたいです。

ftpサーバは、Windowsの標準機能のIISを使い、自分のパソコンをサーバとして利用できるようにしました。android端末からchromeアプリを使い、ftp://ipaddress/と入力すると、ftpサーバにアクセスすることができています。しかし、android studioから同じことを実現しようとするとエラーが出てしまいます。

発生している問題・エラーメッセージ

/com.example.user.webftp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.user.webftp, PID: 8294 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.webftp/com.example.user.webftp.MainActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=ftp://ipaddress/... } at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=ftp://192.168.0.12/... } at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1937) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1616) at android.app.Activity.startActivityForResult(Activity.java:4487) at android.app.Activity.startActivityForResult(Activity.java:4445) at android.app.Activity.startActivity(Activity.java:4806) at android.app.Activity.startActivity(Activity.java:4774) at com.example.keita.webftp.MainActivity.onCreate(MainActivity.java:21) at android.app.Activity.performCreate(Activity.java:7009) at android.app.Activity.performCreate(Activity.java:7000) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)  at android.app.ActivityThread.-wrap11(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6494)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

該当のソースコード

Java

1 2public class MainActivity extends Activity { 3 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 Uri uri = Uri.parse("ftp://ipaddress/"); 9 //Uri uri = Uri.parse("ftp://user:passwd@ipaddress/Book1.xlsx"); 10 //Uri uri = Uri.parse("https://www.google.co.jp/"); 11 12 Intent i = new Intent(Intent.ACTION_VIEW,uri); 13 startActivity(i); 14 } 15}

試したこと

android端末でchromeアプリを使い、ftp://ipaddress/と入力することで、ftpサーバに接続できることを確認した。
インターネットのほかにもpermissionが必要なのかと思い調べたが、わからなかった。
ヒントになるソースコードを探したが見つからなかった。

補足情報(FW/ツールのバージョンなど)

開発環境はAndroid Studio3.1.4を使用しています。
言語はJavaを使用しています。
パソコンはWindows10のものを使用しています。
Android Nexus5Xの実機を使い実行しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/06 11:13

ftpプロトコルに対する起動インテントが設定されてないだけですね。 インテントのオプションで起動するパッケージ(アプリ)を指定してください。
k126578ta

2019/01/07 13:32

インテントでオプションが付けられるの知りませんでした。こんな便利な機能があるのですね。無事、ftp通信で開くことができました。ありがとうございます。
guest

回答1

0

自己解決

asahina1979さんの言う通り、intentでchromeを起動するようにオプションを指定することにより、解決しました。具体的には、
intent.setClassName("com.android.chrome","com.google.android.apps.chrome.Main"),
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
をインテントのオプションで追加しました。

投稿2019/01/07 13:40

k126578ta

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問