Netzwerk-Status abfragen

  • Antworten:2
Gelöschter Account
  • Forum-Beiträge: 24

22.08.2010, 17:26:40 via Website

Android bietet eine ganze Reihe von Auskunftsfunktionen. Das folgende - sehr kurze - Listing zeigt, wie man auf solche Statusinformationen zugreift. Konkret frage ich hier ab, ob im aktuellen Mobilnetzwerk Roaming aktiv ist. Man könnte das Programmfragment zum Beispiel leicht zu einem kleinen Roaming-Widget ausbauen.

1package com.thomaskuenneth;
2
3import android.app.Activity;
4import android.content.Context;
5import android.net.ConnectivityManager;
6import android.net.NetworkInfo;
7import android.os.Bundle;
8import android.widget.TextView;
9
10public class TestActivity extends Activity {
11
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.main);
16
17 ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
18
19 NetworkInfo mobile = connMgr
20 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
21
22 String roaming = "roaming ist " + (mobile.isRoaming() ? "ein" : "aus");
23
24 ((TextView) findViewById(R.id.view)).setText(roaming);
25 }
26}

Damit das Ganze auch funktioniert, muss die App das Recht android.permission.ACCESS_NETWORK_STATE anfordern.

Weitere - hoffentlich interessante - Tipps für Android-Entwickler und Fans von mobilen Geräten findet ihr auf meinem Blog http://kuennetht.blogspot.com/

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

22.08.2010, 21:46:03 via Website

Gibts alles schon in den Code Snippets ;)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 24

22.08.2010, 23:16:30 via Website

Sorry, aber das "Gibt's schon" muss man differenzierter betrachten.

Wenn man sich die beiden Listings ansieht, fällt auf, dass das Netzwerk anders ermittelt wird:

Ich frage explizit nach ConnectivityManager.TYPE_MOBILE. Das andere macht final NetworkInfo[] infos = systemService.getAllNetworkInfo(); und iteriert dann solange über das gelieferte Feld, bis isConnectedOrConnecting() true liefert. Ich kann hierin keine Prüfung auf einen bestimmten Netzwerktyp entdecken. Aber wo steht denn, dass nicht auch TYPE_WIFI oder TYPE_WIMAX unter bestimmten Bedingungen für isRoaming() true liefern? Wenn's schlecht läuft, krieg ich so den Status für "irgend" ein aktives Netzwerk. ...aber darauf will ich gar nicht hinaus. Ziel meines Postings war einfach nur ein möglichst kurzes Stück Quelltext, an dem man erkennt, wie man Statusinformationen zu einem ganz bestimmten Netzwerk bekommt.

Antworten