بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

حالت isConnected برای httpUrlConnection وجود نداره؟

مدیریت گفتگو
goorgool 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام دوستان

میخواستم بدونم در قسمت دانلود که استاد توضیح دادند چطور میشه فهمید که مثلاً بدلیل قطع شدن اینترنت دانلود فایل دیگه ادامه نیافته و بتونم دستور بدم که فایل ناقص را پاک کن.

یک مشکلی هم که دارم اینه که وقتی در حین دانلود، نت رو قطع میکنم دیگه ادامه ی دستوراتی که در متد دانلود وجود داره اجرا نمیشند، چرا؟

نظرات

Vahid 11 سال پیش
خب یه راهش این هست که همراه با شروع دانلود، سایز فایل رو هم یک جا ذخیره کنی تا هر موقع خواستی بتونی با فایل دانلود شده مقایسه کنی
omidronaldoo 11 سال پیش
دانلودر استاد عالیه یکم تغییرش بدی میشه دانلودر بازار
goorgool 11 سال پیش
picaking خواستم همین کار رو بکنم ولی وقتی نت قطع میشه دیگه اصلاً متد دانلود رو ادامه نمیده که من بتونم سایزشون رو مقایسه کنم. بعد میخوام همین که نت قطع شد متوجه بشم، دستوری برای این کار وجود نداره؟

پاسخ‌ها 2

goorgool 11 سال پیش

منظورم اینه که آیا میشه متوجه شد که connection ارتباطش رو از دست داده؟ برای خود connection چنین متدی وجود داره؟

                     HttpURLConnection connection = (HttpURLConnection) url.openConnection();

نظرات

goorgool 11 سال پیش
دوستان کسی نظری نداره؟
Vahid 11 سال پیش

این کد با استفاده از یک BroadcastReceiver مشکل شما رو حل میکنه...
مشخص هست که مقادیر 0،1،2 وضعیت رو مشخص خواهند کرد:

 public class NetworkUtil {
public static int TYPE_WIFI = 1;
public static int TYPE_MOBILE = 2;
public static int TYPE_NOT_CONNECTED = 0;
public static final int NETWORK_STATUS_NOT_CONNECTED = 0, NETWORK_STAUS_WIFI = 1, NETWORK_STATUS_MOBILE = 2;

public static int getConnectivityStatus(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (null != activeNetwork) {
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) return TYPE_WIFI;

if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) return TYPE_MOBILE;
}
return TYPE_NOT_CONNECTED;
}

public static int getConnectivityStatusString(Context context) {
int conn = NetworkUtil.getConnectivityStatus(context);
int status = 0;
if (conn == NetworkUtil.TYPE_WIFI) {
status = NETWORK_STAUS_WIFI;
} else if (conn == NetworkUtil.TYPE_MOBILE) {
status = NETWORK_STATUS_MOBILE;
} else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) {
status = NETWORK_STATUS_NOT_CONNECTED;
}
return status;
}
}

کد BroadcastReceiver:

 public class NetworkChangeReceiver extends BroadcastReceiver {

@Override
public void onReceive(final Context context, final Intent intent) {

int status = NetworkUtil.getConnectivityStatusString(context);
Log.e("Sulod sa network reciever", "Sulod sa network reciever");
if (!"android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
if (status == NetworkUtil.NETWORK_STATUS_NOT_CONNECTED) {
new ForceExitPause(context).execute();
} else {
new ResumeForceExitPause(context).execute();
}

}
}
}
 

تعریف رسیور در مانیفست:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<receiver
android:name="NetworkChangeReceiver"
android:label="NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>

دسترسی های مورد نیاز:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

منبع

علاوه بر این، این لینک ها رو هم ببینید: لینک1 - لینک2

نظرات

goorgool 11 سال پیش
خیلی ممنون دوست عزیز ، بررسی میکنم ایشالا که درست شه

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .