2016-08-11 14 views
0

ローカルサーバー経由でアプリケーションを更新したいと思います。私は、サーバー上で自分のアプリケーションを配置していると、このコードを、私はそれhttp urlで円滑に動作している間にhttps urlからapkファイルを取得できません

public class UpdateClass extends AsyncTask<String, String, String> { 


    ProgressDialog progressDialog; 
    int status = 0; 

    private Context context; 

    public void onPreExecute() { 
     progressDialog = new ProgressDialog(Update.this); 
     progressDialog.setMessage("Please Wait......."); 
     progressDialog.show(); 

    } 

    @Override 
    protected String doInBackground(String... arg0) { 
     try { 
      URL url = new URL(arg0[0]); 
      HttpURLConnection c = (HttpURLConnection) url.openConnection(); 
      c.setRequestMethod("GET"); 
      c.setDoOutput(true); 
      c.connect(); 

     // String PATH = Environment.getExternalStorageDirectory() + "/Download/"; 
      String dir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/"; 

      System.out.println("path..........." + Environment.getExternalStorageDirectory()); 
      File file = new File(dir); 
      file.mkdirs(); 
      File outputFile = new File(file, "location.apk"); 
      FileOutputStream fos = new FileOutputStream(outputFile); 

      InputStream is = c.getInputStream(); 

      byte[] buffer = new byte[1024]; 
      int len1 = 0; 
      while ((len1 = is.read(buffer)) != -1) { 
       fos.write(buffer, 0, len1); 
      } 
      fos.close(); 
      is.close(); 

      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + 
        "/Download/" + "location.apk")), "application/vnd.android.package-archive"); 
      System.out.println("path........dsffffffffffffffsdfffff..." + Environment.getExternalStorageDirectory()); 

      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 


     } catch (FileNotFoundException fnfe) { 
      status = 1; 
    //    Toast.makeText(context, "App not Available", Toast.LENGTH_LONG).show(); 
      Log.e("File", "FileNotFoundException! " + fnfe); 

     } catch (Exception e) { 
      // Toast.makeText(context, "App update", Toast.LENGTH_LONG).show(); 
      Log.e("UpdateAPP", "Exception " + e); 
     } 
     return null; 
    } 


    public void onPostExecute(String unused) { 
     progressDialog.dismiss(); 
     /* if (status == 1) 
      Toast.makeText(context, "App not Available",  Toast.LENGTH_LONG).show(); 
    }*/ 
    } 
} 

コードは「http://localhost/androidservices/location.apk」 と正常に動作しますが、私は自分のサーバーアドレスを使用して、このURLを交換するときに、私はその後、https://liveserver/androidservices/location.apkで更新作業を行っています私のlogcatと携帯電話で同じファイル名を持つファイルがダウンロードされたファイルが見つかりませんでした。サイズは0kbです。ブラウザ(Chrome、Mozilla)で開くと、ファイルが簡単にダウンロードされているので、ブラウザからURLにアクセスできます。

答えて

0

このクエリの解決方法が見つかりました。 IISサーバーでは、POSTメソッドと私が手を渡していたが、私は

c.setRequestMethod("GET"); 
     c.setDoOutput(true); 

を使用していたが、使用方法がpost.Iが

   URL url = new URL(arg0[0]); 

      HttpURLConnection c = (HttpURLConnectionurl.openConnection(); 
      c.connect(); 
にそれを変更しましたので、このURLがいたポストを使用していた方法をサポートしていません。

を削除してsetDoOutput(true)を削除したため、メソッドがGETに変更され、プログラムが円滑に動作し始めました。

関連する問題