android - Unable to download .apk file from async task -


i trying download apk url inside async task not working , .apk not or partially downloading here, don't know why. progress bar dialog doesn't show progress , stuck @ 0. please me solve issue.

thank in advance!

here code :

public class mainactivity extends appcompatactivity implements view.onclicklistener{  interstitialad minterstitialad; progressdialog pdialog;  private button downloadbutton;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      pdialog = new progressdialog(this);     downloadbutton = (button) findviewbyid(r.id.button_download);     downloadbutton.setonclicklistener(this);      minterstitialad = new interstitialad(this);     minterstitialad.setadunitid(getstring(r.string.interstitial_full_screen));     adrequest adrequest = new adrequest.builder().build();      minterstitialad.loadad(adrequest);      minterstitialad.setadlistener(new adlistener() {         public void onadloaded() {             showinterstitial();         }     });  }  private void showinterstitial() {     if (minterstitialad.isloaded()) {         minterstitialad.show();     } }  @override public void onclick(view v) {     switch (v.getid()){         case r.id.button_download:             downloadandinstall downloadandinstall = new downloadandinstall();             downloadandinstall.execute("http://cygnus.androidapksfree.com/hulk/com.viber.voip_v6.0.2.22-226_android-4.0.apk");             break;     } }  class downloadandinstall extends asynctask<string, string, string> {      @override     protected void onpreexecute() {         super.onpreexecute();         pdialog.setmessage("downloading app");         pdialog.setprogressstyle(progressdialog.style_horizontal);         pdialog.setindeterminate(true);         pdialog.setprogress(0);         pdialog.show();     }      @override     protected string doinbackground(string... urlarr) {          int count;         try {             log.d("url","url = "+urlarr[0]);             url url = new url(urlarr[0]);             urlconnection urlconnection = url.openconnection();             urlconnection.connect();              int filesize = urlconnection.getcontentlength();             file sdcard = environment.getexternalstoragedirectory();              inputstream input = new bufferedinputstream(url.openstream(), 8192);             outputstream output = new fileoutputstream(sdcard+"/app_file.apk");              byte[] buffer = new byte[1024];             float total = 0;              while ((count = input.read(buffer)) != -1) {                 total += count;                 publishprogress(""+(int)((total*100)/filesize));                 output.write(buffer, 0, count);             }              output.flush();             output.close();             input.close();          } catch (malformedurlexception e) {             e.printstacktrace();         } catch (ioexception e) {             e.printstacktrace();         } catch (exception e){             e.printstacktrace();         }         return null;     }      @override     protected void onprogressupdate(string... progress) {         pdialog.setprogress(integer.parseint(progress[0]));     }      @override     protected void onpostexecute(string file_url) {         pdialog.dismiss();     } }  } 

androidmenifest.xml

<?xml version="1.0" encoding="utf-8"?>  <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="in.friper.rajeshincorp.abc">  <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-permission     android:name="android.permission.install_packages"     tools:ignore="protectedpermissions"/> <uses-permission android:name="android.permission.write_external_storage" /> <uses-permission android:name="android.permission.read_external_storage" /> <uses-permission android:name="android.permission.write_sync_settings" />  <application     android:allowbackup="true"     android:icon="@mipmap/ic_launcher"     android:label="@string/app_name"     android:supportsrtl="true"     android:theme="@style/apptheme">      <meta-data         android:name="com.google.android.gms.version"         android:value="@integer/google_play_services_version" />      <activity         android:name=".splashactivity"         android:configchanges="orientation|keyboardhidden|screensize"         android:label="@string/app_name"         android:theme="@style/fullscreentheme">         <intent-filter>             <action android:name="android.intent.action.main" />              <category android:name="android.intent.category.launcher" />         </intent-filter>     </activity>      <activity         android:name="com.google.android.gms.ads.adactivity"         android:configchanges="keyboard|keyboardhidden|orientation|screenlayout|uimode|screensize|smallestscreensize"         android:theme="@android:style/theme.translucent" />      <activity         android:name=".mainactivity"         android:theme="@style/fullscreentheme">      </activity> </application> 

splashactivity.java

public class splashactivity extends appcompatactivity {  private static final int my_permissions_request_read_external_storage = 123; private static final int my_permissions_request_write_sync_settings = 345; private static final int my_permissions_request_access_network_state = 567;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_splash);      if(contextcompat.checkselfpermission(splashactivity.this, manifest.permission.read_external_storage)!= packagemanager.permission_granted &&             contextcompat.checkselfpermission(splashactivity.this, manifest.permission.write_sync_settings)!= packagemanager.permission_granted &&             contextcompat.checkselfpermission(splashactivity.this, manifest.permission.access_network_state)!= packagemanager.permission_granted) {          if (activitycompat.shouldshowrequestpermissionrationale(splashactivity.this, manifest.permission.read_external_storage) &&                 activitycompat.shouldshowrequestpermissionrationale(splashactivity.this, manifest.permission.write_sync_settings) &&                 activitycompat.shouldshowrequestpermissionrationale(splashactivity.this, manifest.permission.access_network_state)) {              // show explanation user *asynchronously* -- don't block             // thread waiting user's response! after user             // sees explanation, try again request permission.          } else {              // no explanation needed, can request permission.             activitycompat.requestpermissions(splashactivity.this,                     new string[]{manifest.permission.read_external_storage},                     my_permissions_request_read_external_storage);              activitycompat.requestpermissions(splashactivity.this,                     new string[]{manifest.permission.write_sync_settings},                     my_permissions_request_write_sync_settings);              activitycompat.requestpermissions(splashactivity.this,                     new string[]{manifest.permission.access_network_state},                     my_permissions_request_access_network_state);          }     }     gotonextactivity(); }  @override public void onrequestpermissionsresult(int requestcode, string permissions[], int[] grantresults) {     switch (requestcode) {          case my_permissions_request_read_external_storage: {              if (grantresults.length > 0 && grantresults[0] == packagemanager.permission_granted) {                 // permission granted             } else {                 // permission denied             }             return;          }          case my_permissions_request_write_sync_settings: {              if (grantresults.length > 0 && grantresults[0] == packagemanager.permission_granted) {                 // permission granted             } else {                 // permission denied             }             return;         }          case my_permissions_request_access_network_state: {              if (grantresults.length > 0 && grantresults[0] == packagemanager.permission_granted) {                 // permission granted             } else {                 // permission denied             }             return;         }      }  }  public void gotonextactivity(){     intent i= new intent(this,mainactivity.class);     startactivity(i);     finish(); }  } 

the above code works fine after fix toast called wrong thread.
percent seemed stuck on 0 because of large size of apk.


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -