1.首先要先在AndroidManifest.xml主配置文件里添加用户权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在 里面添加下面配置:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/png" />
</intent-filter>
2.布局文件的代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.889"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.606" />
<TextView
android:id="@+id/path"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:lineSpacingExtra="2dp"
android:scrollbars="vertical"
android:singleLine="false"
android:text="this is content, blablabla..."
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/img"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintEnd_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
3.MainActivity中的代码:
package com.example.myapplication;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import java.io.File;
public class MainActivity extends AppCompatActivity {
private static final int WRITE_PERMISSION = 0x01;
private TextView pathTextView;
private Uri uri ;
private ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestWritePermission();
pathTextView= findViewById(R.id.path);
Intent intent = getIntent();
String action = intent.getAction();//action
String type = intent.getType();//类型
if (Intent.ACTION_SEND.equals(action) && type != null) {
uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
//如果是媒体类型需要从数据库获取路径
String filePath=getRealPathFromURI(uri);
pathTextView.setText("文件路径:"+filePath);
//显示图片
img = findViewById(R.id.img);
File file = new File(filePath);
if (file.exists()) {
/* File picture = new File(Environment.getExternalStorageDirectory(), "wx_camera_1561181345765.jpg");
Uri filepath = Uri.fromFile(picture);*/
Bitmap bm = BitmapFactory.decodeFile(filePath);
img.setImageBitmap(bm);
}
}
}
/**
* 动态的添加权限
*/
private void requestWritePermission(){
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},WRITE_PERMISSION);
}
}
/**
* 通过Uri获取文件在本地存储的真实路径
*/
private String getRealPathFromURI(Uri contentUri) {
String[] data = {MediaStore.MediaColumns.DATA};
Cursor cursor=getContentResolver().query(contentUri, data, null, null, null);
if(cursor.moveToNext()){
return cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
}
cursor.close();
return null;
}
}
4:再打包项目时报了一个这样的错误:
Could not resolve com.android.support:support-annotations:{strictly 26.0.0}.
在app build.gradle中添加下面配置解决问题:
configurations.all {
resolutionStrategy.force ‘com.android.support:support-annotations:27.1.1’
}
项目效果图: