我正在尝试编写一个应用程序从url下载pdf,将它们存储在sd上,然后由adobe pdf reader或其他能够打开pdf的应用程序打开.
直到现在,我已经"成功下载并将其存储在Sd卡上"(但每当我尝试使用pdf阅读器打开pdf时,阅读器崩溃并发出意外错误),例如,http://maven.apache.组织/ Maven的1.x中/ maven.pdf
这是我的下载程序的代码:
//........code set ui stuff
//........code set ui stuff
new DownloadFile().execute(fileUrl, fileName);
private class DownloadFile extends AsyncTask<String, Void, Void>{
@Override
protected Void doInBackground(String... strings) {
String fileUrl = strings[0]; // -> http://maven.apache.org/maven-1.x/maven.pdf
String fileName = strings[1]; // -> maven.pdf
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File folder = new File(extStorageDirectory, "testthreepdf");
folder.mkdir();
File pdfFile = new File(folder, fileName);
try{
pdfFile.createNewFile();
}catch (IOException e){
e.printStackTrace();
}
FileDownloader.downloadFile(fileUrl, pdfFile);
return null;
}
}
public class FileDownloader { …Run Code Online (Sandbox Code Playgroud) 有没有办法精确检测设备类型(手机,平板电脑,手表,电视,汽车,PC)?
现在,我找到了一种方法来检测应用程序是在汽车(uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR),电视(uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION)或手表(uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_WATCH)上运行.这是对的吗?连接到汽车的手机是显示为手机还是"Android Auto"?
为了区分手机,平板电脑或计算机,我可以检查最小屏幕尺寸(600dp,例如平板电脑或笔记本电脑).
现在的问题是区分平板电脑和笔记本电脑.你有什么想法吗?
PS:我不是要求它制作响应式用户界面,这是一个与帐户设备管理相关的问题