longpress长按保存图片安卓兼容
时间: 2023-11-25 19:08:50 浏览: 141
在 Android 中,长按保存图片的流程可以分为以下几个步骤:
1. 首先,需要在 AndroidManifest.xml 文件中添加写入外部存储的权限:
```
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
2. 在长按图片的事件处理方法中,需要获取图片的 Bitmap 对象:
```
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
```
3. 接下来,需要将获取到的 Bitmap 对象保存到外部存储中。但是,在 Android 6.0 及以上版本中,需要动态获取写入外部存储的权限:
```
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_DENIED) {
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
requestPermissions(permissions, PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE);
return;
}
}
```
4. 如果已经获取了写入外部存储的权限,可以使用以下代码将 Bitmap 对象保存到外部存储中:
```
String filename = "image.jpg";
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, filename, "Image description");
```
5. 最后,需要在 AndroidManifest.xml 文件中添加以下代码,以便在保存图片时能够通知系统图库更新:
```
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_SCANNER_SCAN_FILE" />
</intent-filter>
</receiver>
```
其中,MyReceiver 是一个广播接收器,用于接收系统通知图库更新的广播。在广播接收器中,需要调用以下方法:
```
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(path))));
```
其中,path 是保存图片的文件路径。
阅读全文