Android 上无法通过 HTTP 访问查看 PDF

问题描述 投票:0回答:1

我只想通过 google Drive 或 acrobat 查看 PDF。

首先我尝试访问 smb 文件, 但我认为smb协议对googledrive不太友好。(HTTP访问)

然后我从 smb 下载 PDF 文件到我的本地存储。 但我仍然无法通过 google Drive 或 Acrobat reader 查看 PDF 文件。

我的代码是:

    //////////////////////////////////////////////
    val user = "guest"
    val password = ""
    val domain = "192.168.1.1"
    val smbroot = "smb://" + domain + "/root/"
    //////////////////////////////////////////////
    
    private fun ServerFileAccess() {
        var prop: java.util.Properties
        prop = java.util.Properties()
        prop.setProperty("jcifs.smb.client.minVersion", "SMB1");
        prop.setProperty("jcifs.smb.client.maxVersion", "SMB311");
        prop.put("jcifs.smb.client.ipcSigningEnforced", "false");

        var bc: jcifs.context.BaseContext;
        bc = jcifs.context.BaseContext(jcifs.config.PropertyConfiguration(prop))

        var auth: jcifs.smb.NtlmPasswordAuthenticator
        auth = jcifs.smb.NtlmPasswordAuthenticator()

        var cifsCon: jcifs.CIFSContext
        cifsCon = bc.withCredentials(auth)

        var filePath: String
        filePath = smbroot + "test.pdf"

        try {
            var smb_file: jcifs.smb.SmbFile
            smb_file = jcifs.smb.SmbFile(filePath, cifsCon)

            // download to "./Download"
            var downFile = download_file(smb_file)

            if (downFile != null) {
                openPdfFromUrl(downFile.path)
            }
        } catch (e: ActivityNotFoundException){
            Log.d("Error showing pdf", "Error", e)
        } catch (ex: Exception) {
            Log.d("ServerFileAccess", "Error", ex)
        } finally {
            Log.d("ServerFileAccess", "finally")
        }
        Log.d("ServerFileAccess", "END")
    }

private fun openPdfFromUrl(url: String) {

    Intent(Intent.ACTION_VIEW).apply {
        val uri = Uri.parse(url)
        setDataAndType(uri, "application/pdf")
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
    }.also { intent ->
        openPdfFromIntent(intent)
    }
}

private fun openPdfFromIntent(intent: Intent) {
    activity.startActivity(intent)
}

有什么问题吗? 请告诉我。

kotlin pdf view drive smb
1个回答
0
投票

您能否详细说明将其下载到本地存储后到底发生了什么?它是否会打开或提示您选择要使用的查看器?或者什么也没有发生?

© www.soinside.com 2019 - 2024. All rights reserved.