Android PDF未获取下载表单url
我对安卓非常陌生,第一次这么做。我正在尝试在我的应用程序中下载pdf表单url,但无法下载。我真的搞砸了。我不知道我错过了什么,为什么这对我不起作用。请帮我做这个 我正在粘贴代码:Android PDF未获取下载表单url,android,pdf,download,android-sdcard,httpconnection,Android,Pdf,Download,Android Sdcard,Httpconnection,我对安卓非常陌生,第一次这么做。我正在尝试在我的应用程序中下载pdf表单url,但无法下载。我真的搞砸了。我不知道我错过了什么,为什么这对我不起作用。请帮我做这个 我正在粘贴代码: public class ProductBrochureActivity extends Activity { private static String cookie; private static String nid; WebView webViewForBrochureAndVideo; private St
public class ProductBrochureActivity extends Activity {
private static String cookie;
private static String nid;
WebView webViewForBrochureAndVideo;
private String prodBrochureURL;
private String prodVideoURL;
private static int clickedItemId;
ActionBar actionBar;
private static HashMap<String, String> cookieWithRequest = new HashMap<String, String>();
static Object json;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.product_brochure);
actionBar = getActionBar();
actionBar.hide();
Intent intent = getIntent();
cookie = intent.getStringExtra(BsharpConstant.WEB_SERVICES_COOKIES);
nid = intent.getStringExtra(BsharpConstant.PRODUCT_NODE_ID);
clickedItemId = intent.getIntExtra(BsharpConstant.CLICKED_ITEM_ID, 0);
String jsonResponseFromWebservices = WebserviceBsharpUtil
.callWebServicesToGetTheProductBrochureAndVideo(cookie, nid);
urlFromResponse(jsonResponseFromWebservices);
cookieWithRequest.put(BsharpConstant.WEB_SERVICES_COOKIES, cookie);
switch (clickedItemId) {
case 0:
if (!prodBrochureURL.isEmpty()) {
try {
new DownloadFile();
} catch (ActivityNotFoundException e) {
Toast.makeText(this,
"No Application Available to View PDF",
Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "No PDF is Attached with this Product",
Toast.LENGTH_SHORT).show();
}
break;
case 1:
if (!prodVideoURL.isEmpty()) {
try {
new DownloadFile();
} catch (ActivityNotFoundException e) {
Toast.makeText(this,
"No Application Available to View PDF",
Toast.LENGTH_SHORT).show();
}
break;
} else {
Toast.makeText(this, "No Video is Attached with this Product",
Toast.LENGTH_SHORT).show();
}
}
}
/**
* GetTheBrochureAndAttachedVideoURL
*
* @param jsonResponse
*/
public void urlFromResponse(String jsonResponse) {
try {
json = new JSONTokener(jsonResponse).nextValue();
if (json instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) json;
prodBrochureURL = jsonArray.getJSONObject(0).getString(
BsharpConstant.PRODUCT_BROCHURE_URL);
prodVideoURL = jsonArray.getJSONObject(0).getString(
BsharpConstant.PRODUCT_VIDEO_URL);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
private class DownloadFile extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
String filename = "brochure.pdf";
HttpURLConnection connection;
try {
URL url = new URL(prodBrochureURL);
connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty(
BsharpConstant.WEB_SERVICES_COOKIES, cookie);
connection.setDoOutput(true);
connection.connect();
} catch (IOException e1) {
return e1.getMessage();
}
File folderDir = new File(getExternalFilesDir("Bsharp_PDF")
+ "/Download");
File file = new File(folderDir, filename);
if (file.exists()) {
file.delete();
}
if ((folderDir.mkdirs() || folderDir.isDirectory())) {
try {
InputStream inputStream = connection.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream(
folderDir + "/" + filename);
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, len1);
}
fileOutputStream.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
} else {
Toast.makeText(getApplicationContext(),
"Unable to create folder", Toast.LENGTH_LONG).show();
}
return "Done";
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG)
.show();
super.onPostExecute(result);
}
}
公共类产品手册活动扩展活动{
私有静态字符串cookie;
私有静态字符串nid;
用于手册和视频的网络视图;
私人字符串产品手册;
私有字符串prodVideoURL;
私有静态int clickedItemId;
ActionBar ActionBar;
私有静态HashMap cookieWithRequest=新HashMap();
静态对象json;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.product_手册);
actionBar=getActionBar();
actionBar.hide();
Intent=getIntent();
cookie=intent.getStringExtra(BsharpConstant.WEB\u服务\u COOKIES);
nid=intent.getStringExtra(BsharpConstant.PRODUCT\u NODE\u ID);
clickedItemId=intent.getIntExtra(BsharpConstant.CLICKED_ITEM_ID,0);
字符串jsonResponseFromWebservices=WebserviceBsharpUtil
.callWebServicesToGetTheProductBrochureAndVideo(cookie,nid);
urlFromResponse(jsonResponseFromWebservices);
cookieWithRequest.put(BsharpConstant.WEB\u服务\u COOKIES,cookie);
开关(单击编辑EMID){
案例0:
如果(!prodBrochureURL.isEmpty()){
试一试{
新下载文件();
}捕获(ActivityNotFounde异常){
Toast.makeText(这个,
“没有可用于查看PDF的应用程序”,
吐司。长度(短)。show();
}
}否则{
Toast.makeText(此“本产品不附带PDF”,
吐司。长度(短)。show();
}
打破
案例1:
如果(!prodVideoURL.isEmpty()){
试一试{
新下载文件();
}捕获(ActivityNotFounde异常){
Toast.makeText(这个,
“没有可用于查看PDF的应用程序”,
吐司。长度(短)。show();
}
打破
}否则{
Toast.makeText(此“本产品不附带任何视频”,
吐司。长度(短)。show();
}
}
}
/**
*GetHberochureAndAttachedVideoUrl
*
*@param jsonResponse
*/
public void urlFromResponse(字符串jsonResponse){
试一试{
json=新的JSONTokener(jsonResponse).nextValue();
if(JSONArray的json实例){
JSONArray JSONArray=(JSONArray)json;
prodBrochureURL=jsonArray.getJSONObject(0.getString)(
BsharpConstant.PRODUCT\u手册\u URL);
prodVideoURL=jsonArray.getJSONObject(0).getString(
BsharpConstant.PRODUCT\u VIDEO\u URL);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
私有类下载文件扩展异步任务{
@凌驾
受保护字符串doInBackground(无效…参数){
字符串filename=“宣传册.pdf”;
httpurl连接;
试一试{
URL=新的URL(prodBrochureURL);
connection=(HttpURLConnection)url.openConnection();
connection.addRequestProperty(
BsharpConstant.WEB_服务_COOKIES,cookie);
connection.setDoOutput(真);
connection.connect();
}捕获(IOE1异常){
返回e1.getMessage();
}
File folderDir=新文件(getExternalFilesDir(“Bsharp\u PDF”)
+“/下载”);
File File=新文件(folderDir,文件名);
if(file.exists()){
delete();
}
if((folderDir.mkdirs()| | folderDir.isDirectory()){
试一试{
InputStream InputStream=connection.getInputStream();
FileOutputStream FileOutputStream=新的FileOutputStream(
folderDir+“/”+文件名);
字节[]缓冲区=新字节[1024];
int len1=0;
而((len1=inputStream.read(buffer))!=-1){
写入(缓冲区,0,len1);
}
fileOutputStream.close();
inputStream.close();
}捕获(例外e){
e、 printStackTrace();
}
}否则{
Toast.makeText(getApplicationContext(),
“无法创建文件夹”,Toast.LENGTH_LONG.show();
}
返回“完成”;
}
@凌驾
受保护的void onPostExecute(字符串结果){
Toast.makeText(getApplicationContext(),结果,Toast.LENGTH\u LONG)
.show();
super.onPostExecute(结果);
}
}
}为了执行异步任务(在您的情况下是下载文件),必须显式调用其execute(Params…Params)方法。在您的情况下,除了实例化任务调用外,还可以在不提供任何参数的情况下执行,即
DownloadFile task = new DownloadFile();
task.execute();
希望这能有所帮助。如果您遇到任何错误,是否可以发布日志?您是否在清单中添加了Internet权限,即@kanak Sony我添加了此权限,也添加了此权限,但仍不起作用。我没有收到任何错误,只是没有下载