2016-01-25 3 views
0

Я пытаюсь загрузить контент из URI Google Диска, но не смог открыть его, но содержимое загружается в папку загрузки с любым размером файла. Хотя контент с именем URL 2 загружается успешно и также открывается в поддерживаемом приложении. Пожалуйста, укажите, где мне не хватает. Нужен ли мне какой-то специальный доступ, или этот код можно будет сделать для этого.DownloadManager не смог загрузить или открыть содержимое с URI-образа Google?

Как загрузить с Google Диска?

public class MainActivity extends Activity { 

// URL 1 
String Download_path = "https://drive.google.com/open?id=1bBd6Q4YyOMdYDV_v3boyYlrcecoaDXwOZw"; 
// URL 2 
//String Download_path = "http://www.vogella.de/img/lars/LarsVogelArticle7.png"; 

String Download_ID = "DOWNLOAD_ID"; 

SharedPreferences preferenceManager; 
DownloadManager downloadManager; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     preferenceManager = PreferenceManager.getDefaultSharedPreferences(this); 
     downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE); 

     Button btnDownload = (Button)findViewById(R.id.download); 
     btnDownload.setOnClickListener(new Button.OnClickListener(){ 

    @Override 
    public void onClick(View arg0) { 
    // TODO Auto-generated method stub 
    Uri Download_Uri = Uri.parse(Download_path); 
    DownloadManager.Request request = new DownloadManager.Request(Download_Uri); 
     request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI 
       | DownloadManager.Request.NETWORK_MOBILE) 
       .setAllowedOverRoaming(false) 
       .setTitle("Demo") 
       .setDescription("Something useful. No, really.") 
       .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "test.JPG") 
       .setMimeType("application/.jpg") 
       .allowScanningByMediaScanner(); 

     //.setDestinationInExternalPublicDir("/mnt/sdcard/Myfolder", "file_name.extension"); 

    long download_id = downloadManager.enqueue(request); 

    //Save the download id 
    Editor PrefEdit = preferenceManager.edit(); 
    PrefEdit.putLong(Download_ID, download_id); 
    PrefEdit.commit(); 
    }}); 
    } 

ответ

2

Попробуйте:

String cookie = CookieManager.getInstance().getCookie(Download_path); 
request.addRequestHeader("Cookie", cookie); 

long download_id = downloadManager.enqueue(request); 

Я думаю, вам нужна информация аутентификации (идентификатор сеанса, и т.д ...) вашей учетной записи Google, которая управляется с помощью печенья.

Менеджер загрузки не вставляет cookie вашего WebView в свой запрос, поэтому вам необходимо передать значение cookie в заголовок запроса вручную.

Это работает для меня.