浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【java】ファイルをintentで送りたい時はUriに加工してから送る

intentで、Fileをそのまま送ろうとするとヌルポを返されて

クラッシュ。

スタックオーバーフローによると、fileは

そのままアクティビティに入れる・データベースに格納

しようとするとディレクトリの複製を拒むため参照元が

全部リセットされて何もない状態で送られること

になり、遷移先でfileを開けようとしてもfileがないと見なされ、

これにより実行ができないために起きるみたいですね。

なので、intentで何かのfileを渡すときはUriに加工して送りましょう。

uriの加工はfileproviderで簡単にできるのでそちらを使用。。。

サンプルで簡単に書くとこのようになります。

送る側

 

Uri intentUri = FileProvider.getUriForFile(this, getPackageName() + ".provider",photoFile);
entryintent.putExtra("uri", intentUri);
startActivity(entryintent);

受け取る側

 

Intent intent = getIntent();
Uri uri = intent.getParcelableExtra("uri");

これでどこのアクティビティでもUriを使うことができるので

お試しください。

 

  • この記事いいね! (0)