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;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/UUUUUltraman/article/details/89084383