我使用下面的代码来设置壁纸。 在所有版本比Android 8(奥利奥)下它显示了一个选择器选择锁屏或主屏幕或两个等,但在Android的8直接设置在主屏幕壁纸没有任何确认。 是什么,在奥利奥更新,或者是问题的代码?
Uri sendUri2 = Uri.fromFile(externalFile);
Intent intent1 = new Intent(Intent.ACTION_ATTACH_DATA);
intent1.setDataAndType(sendUri2,type);
intent1.putExtra("mimeType",type);
intent1.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(Intent.createChooser(intent1, "Set As"), 200);
这是我的解决办法
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_ATTACH_DATA);
File file = new File(path_of_file);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setDataAndType(FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", file), getMimeType(path_of_file);
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(context, "Exception generated", Toast.LENGTH_SHORT).show();
}
}
private static String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) {
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
return type;
}