2017-08-07 72 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

相关问题