public void initView() {
initToolBar();
shareImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("uri:---"+uri);
if (uri!=null && !uri.equals("")){
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM,uri);
startActivity(Intent.createChooser(intent,"分享"));
}else {
Toast.makeText(getContext(),"网络异常",Toast.LENGTH_SHORT);
//再次下载
if (path!=null && !path.equals("")){
new Task().execute(path);
}
}
}
});
}
/**
* 获取网络图片
* @param imageurl 图片网络地址
* @return Bitmap 返回位图
*/
public Bitmap GetImageInputStream(String imageurl){
URL url;
HttpURLConnection connection=null;
Bitmap bitmap=null;
try {
url = new URL(imageurl);
connection=(HttpURLConnection)url.openConnection();
connection.setConnectTimeout(6000); //超时设置
connection.setDoInput(true);
connection.setUseCaches(false); //设置不使用缓存
InputStream inputStream=connection.getInputStream();
bitmap=BitmapFactory.decodeStream(inputStream);
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
/**
* 异步线程下载图片
*
*/
class Task extends AsyncTask<String, Integer, Void> {
protected Void doInBackground(String... params) {
bitmap=GetImageInputStream((String)params[0]);
return null;
}
protected void onPostExecute(Void result) {
super.onPostExecute(result);
SavaImage(bitmap, Environment.getExternalStorageDirectory()+"/shuiliducha/");
}
}
/**
* 保存位图到本地
* @param bitmap
* @param path 本地路径
* @return void
*/
public void SavaImage(Bitmap bitmap, String path){
File dirFile=new File(path);
//文件夹不存在,则创建它
if(!dirFile .exists()){
dirFile .mkdir();
}
File file=new File(path,"person"+".jpg");
FileOutputStream fileOutputStream=null;
try {
fileOutputStream=new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
this.uri=Uri.fromFile(file);
}
android 7 之后 不能分享自己的文件,要配置权限
androidManifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.gw.safety"//项目名
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
file_paths.xml:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="ex_path" path="updateApk/"/>
</paths>
uri获取
Uri uri = FileProvider.getUriForFile(getContext(),"com.gw.safety",f);