如何在android中添加自定义选项(Dowload图像)和其他共享选项
是否可以在intent chooser中添加自定义选项(例如下载图像)和其他共享选项(如所附图像所示) 请参考以下答案:如何在android中添加自定义选项(Dowload图像)和其他共享选项,android,android-intent-chooser,Android,Android Intent Chooser,是否可以在intent chooser中添加自定义选项(例如下载图像)和其他共享选项(如所附图像所示) 请参考以下答案: 示例代码: 不幸的是,我没有得到有用的答案。我做了一个变通办法来解决这个问题 以下是添加自定义“保存到图库”选项的代码(如附图所示) 这里的DownloadActivity是一个透明的活动,它包含下载映像的代码 public class DownloadActivity extends AppCompatActivity { String imageUrl;
示例代码:
不幸的是,我没有得到有用的答案。我做了一个变通办法来解决这个问题 以下是添加自定义“保存到图库”选项的代码(如附图所示) 这里的DownloadActivity是一个透明的活动,它包含下载映像的代码
public class DownloadActivity extends AppCompatActivity {
String imageUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_download);
imageUrl = getIntent().getStringExtra("url");
saveToGallery();
finish();
}
public void saveToGallery() {
try {
String DIR_NAME = "Don Downloaded Images";
String filename = "DON_IMG_" + System.currentTimeMillis();
//String downloadUrlOfImage = "http://fun.localdon.com/DonUGCImg/DON_memes14908366211071492831321991.png";
String downloadUrlOfImage = imageUrl;
File direct =
new File(Environment
.getExternalStoragePublicDirectory(String.valueOf(Environment.DIRECTORY_PICTURES))
.getAbsolutePath() + "/" + DIR_NAME + "/");
if (!direct.exists()) {
direct.mkdir();
Log.e("saveToGallery", "dir created for first time");
}
DownloadManager dm = (DownloadManager) DownloadActivity.this.getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse(downloadUrlOfImage);
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle(filename)
.setMimeType("image/jpeg")
.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
.setDestinationInExternalPublicDir(String.valueOf(Environment.DIRECTORY_PICTURES),
File.separator + DIR_NAME + File.separator + filename);
dm.enqueue(request);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
final Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
final Uri contentUri = Uri.fromFile(direct);
scanIntent.setData(contentUri);
DownloadActivity.this.sendBroadcast(scanIntent);
} else {
final Intent intent1 = new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()));
DownloadActivity.this.sendBroadcast(intent1);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果有人有更好的方法,请分享。谢谢@akash93谢谢分享链接,但这对我没有帮助。请提出其他建议。你看过链接了吗?它包含(更具体地说)正是你想要的need@akash93这没有帮助。我们需要在Intent Chooser中有一个下载选项。您当时还没有浏览该链接。当您使用
Intent筛选器
和image
mime类型注册应用程序时,您的应用程序收到的回调包含可用于访问文件的图像Uri。这是clearly在我之前发布的文档链接中解释过。@SapnaSharma我没有亲自尝试过。但是你面临的问题是什么?你从哪里获得了intentList?@Adnan我没有发布完整的代码,如果你需要的话我会发布。intentList是数组列表,intent chooser添加的过滤包将显示在其中。萨普娜:好的,请发布完整的代码在这里或在我的电子邮件中分享shoutadnan@gmail.com
public class DownloadActivity extends AppCompatActivity {
String imageUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_download);
imageUrl = getIntent().getStringExtra("url");
saveToGallery();
finish();
}
public void saveToGallery() {
try {
String DIR_NAME = "Don Downloaded Images";
String filename = "DON_IMG_" + System.currentTimeMillis();
//String downloadUrlOfImage = "http://fun.localdon.com/DonUGCImg/DON_memes14908366211071492831321991.png";
String downloadUrlOfImage = imageUrl;
File direct =
new File(Environment
.getExternalStoragePublicDirectory(String.valueOf(Environment.DIRECTORY_PICTURES))
.getAbsolutePath() + "/" + DIR_NAME + "/");
if (!direct.exists()) {
direct.mkdir();
Log.e("saveToGallery", "dir created for first time");
}
DownloadManager dm = (DownloadManager) DownloadActivity.this.getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse(downloadUrlOfImage);
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle(filename)
.setMimeType("image/jpeg")
.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
.setDestinationInExternalPublicDir(String.valueOf(Environment.DIRECTORY_PICTURES),
File.separator + DIR_NAME + File.separator + filename);
dm.enqueue(request);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
final Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
final Uri contentUri = Uri.fromFile(direct);
scanIntent.setData(contentUri);
DownloadActivity.this.sendBroadcast(scanIntent);
} else {
final Intent intent1 = new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()));
DownloadActivity.this.sendBroadcast(intent1);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}