ハイ、私は Android の初心者です。アプリケーション全体でネットワーク接続を確認し、状態が変化したときにネットワークの状態をユーザーに通知する必要があります。サンプル コードの使用方法を教えてください。よろしくお願いします。
質問する
402 次
1 に答える
0
一定時間後にネットワークステータスを確認するためrunOnUiThread
におよびを使用して、次のようにユーザーにメッセージを表示できます。ConnectivityManager
private boolean mNetworkRunning=false;
private ConnectivityManager connMgr;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView (R.layout.main);
mClockRunning=true;
NetworkStatusThread();
}
@Override
protected void onDestroy() {
super.onDestroy();
// Stop Thread Here.
mNetworkRunning=false;
}
public void NetworkStatusThread(){
Thread th=new Thread(){
@Override
public void run(){
try
{
while(mNetworkRunning)
{
Thread.sleep(1000L);// set time here for refresh time in show update to user
NetworkActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if(mNetworkRunning)
{
boolean statu=isMobileNetworkAvailable();
if(statu==true)
Toast.makeText(YourCurrentActivity.this, "Network Available",Toast.LENGTH_LONG).show();
else
Toast.makeText(YourCurrentActivity.this, "Network Not Available",Toast.LENGTH_LONG).show();
}
};
}
}catch (InterruptedException e) {
// TODO: handle exception
}
}
};
th.start();
}
public boolean isMobileNetworkAvailable(Context con){
if(null == connMgr){
connMgr = (ConnectivityManager)con.getSystemService(Context.CONNECTIVITY_SERVICE);
}
NetworkInfo wifiInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobileInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(wifiInfo.isAvailable()){
return true;
}else if(mobileInfo.isAvailable()){
return true;
}else{
return false;
}
}
CONNECTIVITY_CHANGE
スレッドを使用しない2番目のオプションでは、 Manifest.xmlのレシーバーを次のように登録できます。
< !-- Needed to check when the network connection changes -->
< uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
< receiver android:name="you_package_name.ConnectionChangeReceiver"
android:label="NetworkConnection">
< intent-filter>
< action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
< /intent-filter>
< /receiver>
コードで:
public class ConnectionChangeReceiver extends BroadcastReceiver {
private static final String TAG =ConnectionChangeReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
boolean success = false;
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
//WIFI
if (State.CONNECTED == state) {
success = true;
}
//GPRS
state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
if (State.CONNECTED != state) {
success = true;
}
if (!success) {
Toast.makeText(context, "SHOW STATUS HERE", Toast.LENGTH_LONG).show();
}
}
于 2012-06-23T10:10:55.313 に答える