一.分享文本和图片内容
二.分享多件内容和接收
三.使用ShareActionProvider
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.myapplication.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="分享简单的文本内容"
android:id="@+id/button"
android:onClick="sharedSimpleContentClick"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="分享图片内容"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:onClick="sharedImageContentClick"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="分享多个内容"
android:id="@+id/button3"
android:onClick="sharedMultipleContentClick"
android:layout_below="@+id/button2"
android:layout_alignRight="@+id/button2"
android:layout_alignEnd="@+id/button2" />
</RelativeLayout>MainActivity.java
package com.example.administrator.myapplication;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.ShareActionProvider;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import java.util.ArrayList;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//分享简单文本内容
public void sharedSimpleContentClick(View view)
{
Intent intent=new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "你是猪吗?^(* ̄(oo) ̄)^");
// startActivity(intent);
//指定选择器
startActivity(Intent.createChooser(intent, "或许是不知梦的缘故,流离之人追逐幻影 布加迪威龙跑不过的仍是时光。"));
}
//分享图片内容
public void sharedImageContentClick(View view)
{
Uri uri= Uri.parse("/storage/emulated/0/appshare.jpg");
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 sharedMultipleContentClick(View view)
{
Uri uri1= Uri.parse("/storage/emulated/0/pic1.jpg");
Uri uri2= Uri.parse("/storage/emulated/0/pic2.jpg");
Uri uri3= Uri.parse("/storage/emulated/0/pic3.jpg");
Uri uri4= Uri.parse("/storage/emulated/0/pic4.jpg");
ArrayList<Uri> list=new ArrayList<Uri>();
list.add(uri1);
list.add(uri2);
list.add(uri3);
list.add(uri4);
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, "分享图片到"));
}
@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;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.administrator.myapplication.MainActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
<item
android:id="@+id/share"
android:title="share"
android:orderInCategory="200"
app:showAsAction="ifRoom"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
></item>
</menu>activity_receiver_shared_content.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.myapplication.ReceiverSharedContentActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="接收分享内容的组件"
android:id="@+id/content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>ReceiverSharedContentActivity.java
package com.example.administrator.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;
public class ReceiverSharedContentActivity extends ActionBarActivity {
private TextView textView_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receiver_shared_content);
textView_content= (TextView) findViewById(R.id.content);
handleContent();
}
private void handleContent()
{
Intent intent=getIntent();
String type=intent.getType();
String action=intent.getAction();
if (Intent.ACTION_SEND.equals(action))
{
if("text/plain".equals(type))
{
String info=intent.getStringExtra(Intent.EXTRA_TEXT);
textView_content.setText(info);
}
}
}
}
清单文件:
文件接受者
<activity
android:name=".ReceiverSharedContentActivity"
android:label="@string/title_activity_receiver_shared_content">
<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>
</activity>