您的位置:首页 > 移动开发

从其他APP分享图片到自己的APP指定界面内

2016-02-15 17:29 357 查看

public static List<String> getListPicPath(Activity activity){

List<String> picPath=new ArrayList<>();

Intent intent = activity.getIntent();//如果从外部进入APP,则实现以下方法

if (Intent.ACTION_SEND.equals(intent.getAction())) {

if (intent.getType().startsWith("image/")) {

Uri imageUri = intent.getParcelableExtra(Intent.EXTRA_STREAM);

if (imageUri != null) {

//处理单张图片

Log.v("从其他APP分享的" ,imageUri.getPath());

if (!imageUri.getPath().contains("external/images/media"))

picPath.add(imageUri.getPath());

else {

String[] proj = {MediaStore.Images.Media.DATA};

Cursor actualimagecursor = activity.managedQuery(imageUri, proj, null, null, null);

int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

actualimagecursor.moveToFirst();

String img_path = actualimagecursor.getString(actual_image_column_index);

picPath.add(img_path);

}

}

}

} else if (Intent.ACTION_SEND_MULTIPLE.equals(intent.getAction())) {

if (intent.getType().startsWith("image/")) {

List<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);

if (imageUris != null) {

//处理多张图片

for (int i = 0; i < imageUris.size(); i++) {

Log.v("从其他APP分享的" , imageUris.get(i).getPath());

if (!imageUris.get(i).getPath().contains("external/images/media"))

picPath.add(imageUris.get(i).getPath());

else {

String[] proj = {MediaStore.Images.Media.DATA};

Cursor actualimagecursor = activity.managedQuery(imageUris.get(i), proj, null, null, null);

int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

actualimagecursor.moveToFirst();

String img_path = actualimagecursor.getString(actual_image_column_index);

picPath.add(img_path);

}

}

}

}

}

return picPath;

}

请将以上代码放入你的APP的工具类内。

使用方法:

在你需要实现的Activity内调用此代码,例如

List<String> pics= AppUtils.getListPicPath(this);

获取到的图片地址为实际内存卡地址。不是虚拟地址哦!

最后记得在需要接收图片的Activity的AndroidMainfest里面加上这段代码:

<activity android:name=".activity.PostCreateActivity"

android:screenOrientation="portrait"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:windowSoftInputMode="adjustResize" >

//请直接拷贝下面这段

<intent-filter>

<action android:name="android.intent.action.SEND" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="image/*" />

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.SEND_MULTIPLE" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="image/*" />

</intent-filter>

//到此结束,无关代码是教大家把以上代码插在哪儿

</activity>

参考文章:http://tieba.baidu.com/p/4212981496

/article/2678374.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: