我只想通过 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)
}
有什么问题吗? 请告诉我。
您能否详细说明将其下载到本地存储后到底发生了什么?它是否会打开或提示您选择要使用的查看器?或者什么也没有发生?