2017-08-07 66 views
0

目前我正在使用WebView顯示pdf並嘗試實現下載功能。我正在使用下載管理器來做到這一點。它可以在下載pdf文件的模擬器上運行。但是,在智能手機中,它只顯示「下載1個任務」。幾秒鐘後,通知沒有下載任何東西。我在Api 19及以上版本中實現它。我的智能手機是Android 5.1。有沒有解決這個問題的方法?Android DownloadManager不能在智能手機上工作

PdfFullscreenActivity.java

public class PdfFullscreenActivity extends AppCompatActivity { 

public WebView webview; 
public String str; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_pdf_fullscreen); 

    Intent intent = getIntent(); 
    str = intent.getExtras().getString("PDF_TAG"); 

    String url = "https://docs.google.com/viewer?embedded=true&url=https://spmsejarahscore.000webhostapp.com/web/media/pdf/" + str; 

    webview = (WebView)findViewById(webView); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.getSettings().setPluginState(WebSettings.PluginState.ON); 
    webview.getSettings().setBuiltInZoomControls(false); 
    webview.getSettings().setAllowFileAccess(true); 
    webview.getSettings().setAppCacheMaxSize(1024 * 1024); 
    webview.getSettings().setAppCacheEnabled(true); 
    webview.loadUrl(url); 

    webview.setWebViewClient(new WebViewClient() { 
     public void onPageFinished(WebView view, String url) { 
     } 

     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return true; 
     } 
    }); 
} 

public void onBackPressed(){ 
    super.onBackPressed(); 
    finish(); 
} 

public void download(View v){ 
    // https://spmsejarahscore.000webhostapp.com/web/media/pdf/SijilPelajaranMalaysia(SPM)_2011_P1,2.pdf 

    String downloadUrl = "https://spmsejarahscore.000webhostapp.com/web/media/pdf/" + str; 

    Uri urifile = Uri.parse(downloadUrl); 
    downloadfile(urifile, v); 
} 

public long downloadfile(Uri uri, View view){ 
    long downloadReference; 
    DownloadManager downloadManager; 

    // Create request for android download manager 
    downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE); 
    DownloadManager.Request request = new DownloadManager.Request(uri); 

    //Setting title of request 
    request.setTitle("Downloading"); 

    //Setting description of request 
    request.setDescription(str); 

    //Set the local destination for the downloaded file to a path within the application's external files directory 
    request.setDestinationInExternalFilesDir(PdfFullscreenActivity.this, Environment.DIRECTORY_DOWNLOADS, str); 

    //Enqueue download and save into referenceId 
    downloadReference = downloadManager.enqueue(request); 

    return downloadReference; 
} 
} 

activity_pdf_fullscreen.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.foong.spmsejerahscore.PdfFullscreenActivity"> 

<WebView 
    android:id="@+id/webView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<ImageButton 
    android:id="@+id/downloadbtn" 
    android:layout_width="45dp" 
    android:layout_height="45dp" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginTop="10dp" 
    android:layout_marginRight="10dp" 
    android:onClick="download" 
    android:background="#264745" 
    android:src="@mipmap/ic_download" /> 

</RelativeLayout> 
+0

不是答案,只是一個提示:這是** **濫用' android:src =「@ mipmap/ic_download」' - 'mipmaps'文件夾只包含** lauche r圖標**。 –

回答

1

地址:

request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)

+0

感謝您的回答,我添加了代碼並下載了pdf,但它存儲在/storage/emulated/0/data/com.example.spmsejarahscore/files/Documents/THE PDF中。我可以知道如何將其更改爲智能手機文檔目錄? – Foong

+1

@Foong'request.setDestinationInExternalPublicDir(「/ AppName」,「file_name.extension」);'將它保存到您的自定義目錄。 –

+0

非常感謝,這節省了我很多 – Foong

相關問題