从其他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
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
相关文章推荐
- android 多进程之 Messenger
- iOS touchID 处理办法
- Android RxJava学习
- Swift MD5 加密字符串
- Android图片的三级缓存和AsyncTask的使用的研究学习
- iOS开发关于xcode中souceControl的苹果文档翻译(节选)
- IOS 中方法重组(Method swizzling)
- iOS中 加强日志输出 开发技术总结
- JS中call/apply、arguments、undefined/null方法详解
- Swift的Debug和Release宏
- android 6.0 手电筒app简单实现
- Android 接入微信支付如此简单
- Xcode发布App的证书的问题
- Android中通过代码获取arrays.xml文件中的数据
- Android Studio 安装出错 Failed to install Intel HAXM. For details, please check the installation log
- Android快速开发框架
- Unity编辑器扩展
- 使用git 发布android系统版本 1
- ios设置图片的拉伸区域
- Android Studio的自带git插件的历史比较功能还不错