Androidシステム共有
2957 ワード
最近、プロジェクトには他のアプリケーションからコンテンツを共有して自分のアプリケーションに入る必要があります.自分でサードパーティのインタフェースをして他の人に適しているのは現実的ではありません.研究してみると、簡単です.多くのappサポートシステムが共有されています.悪くないようです.
Androidの公式ドキュメントから見ると、システム共有は3つのフォーマットしかサポートされていません.テキスト、画像、複数の画像です.これらにより、他のアプリケーションが共有するデータを受信したり、他のアプリケーションにデータを共有したりすることができます.まず他のアプリケーションが共有するデータを受信するには、インタフェースデータのActivityで構成する必要があります.すなわち、AndroidManitestです.xmlはActivityを構成する可能性があります.このように構成することはできません.それはActivityにandroid:exported=falseを設定し、trueに設定すればいいかもしれません.構成が完了したら、現在設定されているActivityで受信する必要があります:Intent intent=getIntent();String action = intent.getAction(); String type = intent.getType(); if (action.equals(Intent.ACTION_SEND) && type != null) { if (type.equals("text/plain")) { handleSendText(intent); } else if (type.startsWith("image/")) { handleSendImage(intent); } } else if (action.equals(Intent.ACTION_SEND_MULTIPLE) && type != null) { if (type.startsWith("image/")) { handleSendMultiImage(intent); } } else {//do nothing.}
上記のことをして、他のアプリケーションの共有アイコンをクリックすると、自分のアプリケーションアイコンが見えます.データを他のアプリケーションに共有する上のデータ受信プロセスを見て、データをどのように共有するかについて大体の考えがあります.コードを参照してください.private void shareText(){Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_TEXT、「私は世界で一番頭のいい人です!」intent.setType("text/plain"); startActivity(intent); }
OK、簡単なシステム共有機能が完成!
Androidの公式ドキュメントから見ると、システム共有は3つのフォーマットしかサポートされていません.テキスト、画像、複数の画像です.これらにより、他のアプリケーションが共有するデータを受信したり、他のアプリケーションにデータを共有したりすることができます.
private void handleSendText(Intent intent) {
String shareText = intent.getStringExtra(Intent.EXTRA_TEXT);
String title = intent.getStringExtra(Intent.EXTRA_SUBJECT);
Map stringMap = getContent(intent);
if (!TextUtils.isEmpty(shareText)) {
//
}
}
private void handleSendImage(Intent intent) {
Uri shareUri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (shareUri != null) {
//
}
}
private void handleSendMultiImage(Intent intent) {
ArrayList uris =
intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
if (uris != null && uris.size() > 0) {
//
}
}
上記のことをして、他のアプリケーションの共有アイコンをクリックすると、自分のアプリケーションアイコンが見えます.
private void shareImage() {
Uri uri = Uri.parse("content://notes/data/media/20");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("image/*");
startActivity(intent);
}
private void shareMultiImage() {
ArrayList uris = new ArrayList<>();
uris.add(Uri.parse("content://notes/data/media/20"));
uris.add(Uri.parse("content://notes/data/media/21"));
uris.add(Uri.parse("content://notes/data/media/22"));
uris.add(Uri.parse("content://notes/data/media/23"));
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.putExtra(Intent.EXTRA_STREAM, uris);
intent.setType("image/*");
startActivity(intent);
}
OK、簡単なシステム共有機能が完成!