5

暗黙のインテントを使用した Android でのファイル編集で 1 つの問題がありました。それは解決されました。それを解決するには多くの時間と順列と組み合わせが必要でしたが、それでも最終的には疑問が残ります。問題は解決されましたが、理由を知りたいという私の探求解決した問題は解決していません。

これについて手がかりがあれば教えてください。

私の問題に来ます。

  1. 活動をしています。アクティビティにボタンがあります。「/mnt/sdcard/xxx/log.txt」に保存されている既存のログ ファイル (テキスト ファイルの例では log.txt) を開きたい

  2. 以下は、私が書いた暗黙のインテント コードで、「アクティビティが見つかりません」という例外が発生しました。

code1: 私が試したところ、例外が発生しました

Uri uri = Uri.parse("file:///sdcard/xxx/log.txt");
Intent viewTestLogFileIntent = new Intent(Intent.ACTION_EDIT,uri);
viewTestLogFileIntent.setType("text/plain");

code2: 私が試したところ、例外が発生しました

Uri uri = Uri.parse("file:///sdcard/xxx/log.txt");
Intent viewTestLogFileIntent = new Intent(Intent.ACTION_EDIT);
viewTestLogFileIntent.setData(uri);
viewTestLogFileIntent.setType("text/plain");

code3: 私が試したところ、うまくいきました

Uri uri = Uri.parse("file:///sdcard/xxx/log.txt");
Intent viewTestLogFileIntent = new Intent(Intent.ACTION_EDIT);
viewTestLogFileIntent.setDataAndType(uri,"text/plain");

私が持っている2つの疑問は

  1. まず、ファイルは /mnt/sdcard/xxx/log.txt にあります。これは、Eclipse の DDMS ビューのファイル システムではっきりと確認できますが、uri でファイル リンクを「file: ///sdcard/xxx/log.txt" パスから /mnt をスキップした場所

  2. コード 1 とコード 2 の何が問題になっていますか? コード3で設定しているデータとタイプは何ですか?意図的に同じデータとタイプを設定していますが、setData()とsetType()のような異なるメソッドを別々に使用しています。なぜそれら ( code2 & code1 ) が機能しないのですか? code3 が機能するのはなぜですか?

4

2 に答える 2

13

setType(String type)クラスのメソッドの Javadoc を参照してくださいIntent

...
このメソッドは、以前に設定されたすべてのデータを自動的にクリアします (たとえば、setData(Uri) によって)。
...

于 2013-02-05T10:10:08.873 に答える