بررسی وضعیت اتصال به اینترنت در آموزش برنامه نویسی اندروید یکی از کارهای مهم طراح اپلیکیشن است که باید بداند دستگاه به اینترنت وصل است یا خیر و اگر وصل است از چه نوعی (داده همراه با Wi-Fi) می باشد؟ ما در این مقاله قصد داریم با یک مثال کاربردی در زمینه بررسی وضعیت اتصال به اینترنت در اندروید استودیو شما را با این جزئیات آشنا کنیم. با ما همراه باشید.
وضعیت اتصال به اینترنت در آموزش برنامه نویسی اندروید چگونه است؟
در آموزش برنامه نویسی اندروید با استفاده از کلاس ConnectivityManager می توانیم به راحتی بررسی کنیم که دستگاه به اینترنت وصل است یا خیر! و همچنین می توانیم نوع اتصال به اینترنت که در حال استفاده از آن هستیم را نیز مشخص کنیم (یعنی اتصال به اینترنت در اندروید از نوع داده همراه است یا Wi-Fi).
برای به دست آوردن وضعیت اتصال به اینترنت در اندروید استودیو ، برنامه ما باید مجوزهای INTERNET و ACCESS_NETWORK_STATE را بدست آورد. برای این کار ، باید موارد زیر را در فایل مانیفست اندرویدی (manifest file) مانند تصویر زیر اضافه کنیم.
<manifest> .... <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> .... </manifest>
۱- وضعیت اتصال به اینترنت را بررسی کنید
در اندروید ما می توانیم وضعیت اتصال به اینترنت را به آسانی با استفاده از روش ()getActiveNetworkInfo شیء ConnectivityManager تعیین کنیم. در نتیجه با استفاده از قطعه کد زیر و استفاده از کلاس ConnectivityManager می توانید بفهمید که اتصال برقرار است یا خیر!
ConnectivityManager cm = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo nInfo = cm.getActiveNetworkInfo(); boolean connected = nInfo != null && nInfo.isAvailable() && nInfo.isConnected();
اگر به قطعه کد بالا توجه کنید می بینید که ما از متد ()getActiveNetworkInfo شیء ConnectivityManager استفاده کردیم تا بدانیم که اتصال به اینترنت در دسترس است یا خیر!
۲- نوع اتصال به اینترنت را تعیین کنید
در اندروید، می توانیم با استفاده از روش ()getType شیء NetworkInfo به راحتی نوع ارتباط اینترنتی موجود در اینترنت یعنی WI-FI است یا داده های تلفن همراه را تعیین کنیم. قطعه کد زیر برای بدست آوردن نوع اتصال به اینترنت در برنامه اندرویدی نوشته شده است.
ConnectivityManager cm = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo nInfo = cm.getActiveNetworkInfo(); boolean isWiFi = nInfo.getType() == ConnectivityManager.TYPE_WIFI;
اگر به قطعه کد بالا توجه کنید می بینید که از روش ()getType شیء NetworkInfo برای دانستن نوع اتصال به اینترنت استفاده کردیم.
اکنون با مثالی کاربردی خواهید دید که چگونه می توان فایل ها را مستقیماً در حافظه داخلی دستگاه ذخیره کرد و با استفاده از اشیاء FileOutputStream و FileInputStream در برنامه اندرویدی فایل ها را از حافظه داخلی دستگاه خواند.
مثال کاربردی از اتصال به اینترنت در اندروید استودیو
در کد زیر بررسی می کنیم که آیا اتصال به اینترنت در دسترس است یا برنامه از شیء android ConnectivityManager استفاده نمی کند! برای اینکار با استفاده از اندروید استودیو (Android Studio) پروژه جدید اندرویدی ایجاد کرده و نام آن را مثلا InternalConnectionExample بگذارید.
در صورت عدم اطلاع از ایجاد یک پروژه یا یک برنامه در استودیوی اندروید، این مقاله را بخوانید :
پس از ایجاد یک برنامه ، فایل activ_main.xml را از مسیر پوشه \ res \ layout باز کرده و کدی را مانند شکل زیر بنویسید:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btnCheck" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="150dp" android:layout_marginLeft="100dp" android:text="Check Internet Connection" /> </LinearLayout>
اکنون فایل MainActivity.java را از مسیر \ java \ com.tutlane.internalstorageexample باز کنید و کدی را مانند شکل زیر بنویسید:
MainActivity.java
package com.tutlane.internetconnectionexample; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnStatus = (Button)findViewById(R.id.btnCheck); btnStatus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Check for Internet Connection if (isConnected()) { Toast.makeText(getApplicationContext(), "Internet Connected", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "No Internet Connection", Toast.LENGTH_SHORT).show(); } } }); } public boolean isConnected() { boolean connected = false; try { ConnectivityManager cm = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo nInfo = cm.getActiveNetworkInfo(); connected = nInfo != null && nInfo.isAvailable() && nInfo.isConnected(); return connected; } catch (Exception e) { Log.e("Connectivity Exception", e.getMessage()); } return connected; } }
اگر به کد بالا توجه کرده باشید، ما با استفاده از شیء ConnectivityManager وضعیت اتصال به اینترنت را بدست آوریم.
اکنون باید مجوزهای INTERNET و ACCESS_NETWORK_STATE را برای برنامه اندرویدی خود برای آن فایل AndroidManifest.xml باز کنید و مجوزهایی را مانند شکل زیر اضافه کنید:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tutlane.internetconnectionexample"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
اگر به قطعه کد بالا توه کرده باشید می بینید که ما وضعیت اتصال به اینترنت را بدست آوردیم و مجوزهای مورد نیاز را در پرونده AndroidManifest.xml اضافه کردیم.
خروجی نمونه اتصال به اینترنت در اندروید استودیو این جلسه الکامکو
هنگامی که مثال بالا را در شبیه ساز اندروید استودیو اجرا کنید، نتیجه ای مانند شکل زیر بدست می آید:
نتیجه کارکرد این مثال: هنگامی که روی دکمه Check Internet Connection کلیک می کنید، وضعیت اتصال به اینترنت چه در دسترس باشد و چه در دسترس نباشد، واکشی می شود.
در نتیجه به این صورت می توانید وضعیت اتصال به اینترنت در برنامه های اندرویدی با استفاده از شیء ConnectivityManager بر اساس نیازهای خود بررسی کنید.