如何在android

问题描述:

中添加自定义选项(下载图像)与其他共享选项是否可以在意向选择器中添加自定义选项(例如下载图像)和其他共享选项(显示在附图中)?如何在android

enter image description here

+0

https://developer.android.com/training/building-content-sharing.html – akash93

+0

@ akash93感谢分享链接,但这并没有帮助我。请提出其他建议。 –

+0

你有没有通过链接?它包含(更具体的[this](https://developer.android.com/training/sharing/receive.html))正是你需要的 – akash93

不幸的是,我没有得到有用的答案。我做了一个解决方法来解决这个问题。

这里是添加自定义的“保存到相册”选项的代码(附件图片所示)

Intent downloadIntent = new Intent(aContext, DownloadActivity.class); 
downloadIntent.putExtra("url", url); 
intentList.add(new LabeledIntent(downloadIntent, "com.don.offers", "Save To Gallery", R.drawable.ic_save_to_gallery)); 

// convert intentList to array 
LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[intentList.size()]); 
openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents); 

这里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(); 
     } 
    } 
} 

enter image description here

如果任何人有更好的方法请share.Thanks

+0

你从哪里得到intentList? – Adnan

+0

@Adnan我没有发布整个代码,如果你需要它,我会做。 intentList是数组列表,在添加了意向选择器的过滤包中显示该列表。 –

+0

Sapna:好的,请在这里发布整个代码或在我的电子邮件[email protected]上分享 – Adnan

参考这样的回答:Link
示例代码: Github Project

+0

亲爱的不工作 –

+0

@SapnaSharma我没有亲自尝试。但是你面临的问题是什么? – Adnan