Android学习——APP内容共享
APP内容共享
发送文本内容
发送简单的数据到其他应用,比如社交分享的内容,意图允许用户快速而方便地共享信息。
//分享简单文本内容
public void shareSimpleContentClick(View v){
Intent intent=new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,"分享简单文本内容");
startActivity(intent);
}
指定选择器:如果只有一个分享选择的情况下,指定选择器一样会跳出列表,而不会直接发送。
//指定选择器
startActivity(intent.createChooser(intent,"指定选择器分享文本内容"));
发送二进制内容
发送图片内容
//分享图片内容
public void shareImageClick(View v){
Uri uri=Uri.parse("图片路径");
Intent intent=new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM,uri);
// startActivity(intent);
//指定选择器
startActivity(intent.createChooser(intent,"分享图片到"));
}
发送多件内容
//分享多件内容
public void shareMultipleClick(View v){
Uri uri1=Uri.parse("/storage/emulated/0/Download/timg.jpg");
Uri uri2=Uri.parse("/storage/emulated/0/Download/timg.jpg");
ArrayList<Uri> list=new ArrayList<>();
list.add(uri1);
list.add(uri2);
Intent intent=new Intent();
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.setType("image/*");
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,list);
// startActivity(intent);
//指定选择器
startActivity(intent.createChooser(intent,"分享多件内容到"));
}
从其他应用程序接受简单的数据
接收单个文本
<intent-filter>
<action android:name="android.intent.action.SEND"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<data android:mimeType="text/plain"></data>
</intent-filter>
处理传入内容
package com.example.actionbar;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class ReceiverSharedContentActivity extends AppCompatActivity {
private TextView textView_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receiver_shared_content);
textView_content=findViewById(R.id.content);
handlerContent();
}
//处理传入的内容
public void handlerContent(){
Intent intent=getIntent();
String type=intent.getType();
String action=intent.getAction();
if (Intent.ACTION_SEND.equals(type)){
if ("text/plain".equals(type)){
String info=intent.getStringExtra(Intent.EXTRA_TEXT);
textView_content.setText(info);
}
}
}
}
使用ShareActionProvider
把分享操作附加到个一个菜单项(注意,必须在Android4.0(API 14) 才能使用)
添加分享菜单
<item android:id="@+id/share" android:title="share"
android:orderInCategory="400" app:showAsAction="ifRoom"
android:icon="@android:drawable/ic_menu_share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"></item>
设置共享的intent
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
MenuItem item=menu.findItem(R.id.share);
ShareActionProvider sap= (ShareActionProvider) MenuItemCompat.getActionProvider(item);
Intent intent=new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,"分享简单文本内容");
sap.setShareIntent(intent);
return true;
}