2016-06-01 7 views
1

Intent.ACTION_SENDと言ってみましょう。ユーザーがファイルを共有できるようにして、自動的に送信できるようにユーザーの選択肢と住所/電話番号を格納します。別の時間に同じ宛先に別のファイル。これは可能ですか? ありがとうIntent.ACTION_SENDでファイルを共有することは可能ですか?

+0

最も確実です。 –

+0

あなたは少なくとも正しい方向に私を導くことができますか? 1時間以上の研究は私を何にも導かなかった。 – MotKohn

答えて

2

ファイルをバイナリデータとして共有することができます(後述)。

Androidデベロッパーページから

参考リンク: https://developer.android.com/training/sharing/send.html

するバイナリコンテンツを送る

バイナリデータ は、適切なMIMEタイプを設定すると、データへのURIを置くと組み合わせACTION_SENDアクションを使用して共有されています EXTRA_STREAMという名前のエクストラ名です。これは、一般に、画像 を共有するために使用されますが、バイナリコンテンツのいずれかのタイプを共有するために使用することができます。以下の

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); 
shareIntent.setType("image/jpeg"); 
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); 

注:

あなたは "/のMIMEタイプを使用することができます "ですが、これは汎用データストリームを処理できるアクティビティ にのみ一致します。受信する アプリケーションは、Uriが指し示すデータにアクセスするための許可を必要とします。 の方法は次のとおりです。 ContentProviderにデータを保存し、他のアプリにプロバイダにアクセスするための正しい 権限があることを確認します。 がアクセスを提供するための好ましいメカニズムは、一時的なURI単位のアクセス許可を使用することで、 は受信するアプリケーションにのみアクセス権を付与します。このようにContentProviderを に簡単に作成するには、FileProviderヘルパークラスを使用します。 システムのMediaStoreを使用します。 Media Storeは主に動画、 のオーディオと画像のMIMEタイプを対象としていますが、Android 3.0(API レベル11)からはメディア以外のタイプも保存できます( のMediaStore.Filesを参照)。ファイルは、scanFile() を使用してMediaStoreに挿入できます。その後、提供されたonScanCompleted()コールバックには、共有に適したcontent://スタイルのUriが に渡されます。一度コンテンツが、それはチュー毎回表示されないようにだけ、上記のコードの最後の行を変更するデバイス

上の任意のアプリにアクセス可能なメディアストア システムに追加注意。これは、アプリケーションの後続実行時にデフォルトの選択肢を保存します。

startActivity(shareIntent); 

特定のアプリケーションにファイルを送信する

ユーザーの選択「は、自動的に同じ宛先へを別のファイルを送信することができるようにするために、ユーザーの選択とアドレス/電話番号を保存します」上記のコードを使用して保存されます。しかし、私はあなたのアプリケーションに別のアプリケーションからの特定の番号/アドレスを保存して、後でファイルを送信できるようには思っていません。あなたの意図が別のアクティビティ(アプリケーション)に移行すると、そのアクティビティ(アプリケーション)から制御することはできません。毎回、2番目のアプリケーションで特定のアドレス/数値を選択する必要があります。

+0

ありがとう、私は自分の送信Intentメカニズムに自分自身を限定するつもりはありませんでした。他の方法はありますか? – MotKohn

+0

私は今のところ、他の仕組みを考えることはできません。インテントは標準的な方法です。他の誰かが何かを提案しているかどうかを見てみましょう。他の選択肢が見つかった場合は、ここで共有してください。 – kingAm

関連する問題