Android之 view提升: 九 使用Intent将图片分享到微信朋友圈
1. 知识点
- 将图片压缩为JPG格式
- 保存到存储卡上
- 以流的形式传递图像资源
2. 代码
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.abc_2);
String filePrefix = null;
try {
filePrefix = saveImageToGallery(MainActivity.this, bitmap);
} catch (IOException e) {
e.printStackTrace();
}
Intent myIntent = new Intent();
ComponentName componentName = new ComponentName("com.tencent.mm",
"com.tencent.mm.ui.tools.ShareToTimeLineUI");
myIntent.setComponent(componentName);
myIntent.setAction(Intent.ACTION_SEND);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
myIntent.setType("image/jpg");
Uri myUri = Uri.parse(filePrefix);
myIntent.putExtra(Intent.EXTRA_STREAM, myUri);
startActivity(myIntent);
}
});
}
private String saveImageToGallery(Context context, Bitmap bitmap) throws IOException {
File mFile = new File(getCacheDir(), "luoGallery");
if(!mFile.exists()) mFile.mkdir();
String mFileName = System.currentTimeMillis() + ".jpg";
String myNameTemp;
File mNewFile = new File(mFile, mFileName);
mNewFile.createNewFile();
FileOutputStream outputStream = new FileOutputStream(mNewFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.flush();
outputStream.close();
myNameTemp = MediaStore.Images.Media.insertImage(context.getContentResolver(),
mNewFile.getAbsolutePath(), mFileName, null);
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.parse(getCacheDir().toString()+"/luoGallery")));
return myNameTemp;
}
}
|