0

我正在尋找記錄3G或2G上的Android手機的分組數據會話數量在給定時間段內的數量。如何檢測Android手機上的移動數據會話的結束

我希望在TelephonyManager.DATA_DISCONNECTED事件在PhoneStateListeners對應於數據使sesion的結束,但它並不像我的運營商支付費用我會(彈出信息這涉及數據後使用)在多個DATA_DISCONNECTED事件之後。

回答

0

您需要使用BroadcastReceiver來偵聽數據斷開事件或數據連接事件。 首先您需要在AndroidManifest.xml中添加接收器。

<receiver 
     android:name=".Networkconncted" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 

接下來,你需要創建延伸BroadcastReceiver類,當數據連接/斷開這個類會被調用。

public class Networkconncted extends BroadcastReceiver { 
    public static final String key = "networkInfo"; 
    public static final String disconnected = "DISCONNECTED"; 
    public static final String MOB_INT = "mobile"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle extras = intent.getExtras(); 
     if (extras != null) { 
      String value = extras.get(key).toString(); 
      Log.v("netappcheck", value); 
      String temp[] = value.split(","); 
      if (temp[0].toLowerCase().contains(MOB_INT)) //check if mobile n/w 
       if (temp[1].contains(disconnected)) { 
        Toast.makeText(context,"data disconnected",Toast.LENGTH_SHORT).show(); 
        //do something when data is disconnected 
       } else { 
        Toast.makeText(context,"data connected",Toast.LENGTH_SHORT).show(); 
        //do something when data is connected 
       } 
     } 
    } 
} 

當廣播接收器被稱爲intent.getExtras().get(key)將返回以下值:

[type: MOBILE[EDGE], state: DISCONNECTED/DISCONNECTED, 
reason: (unspecified), extra: airtelgprs.com, roaming: false, 
failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false] 

在類型字段中提到的網絡類型連接,在連接時/ disconected WiFi類型將返回WIFI[],當連接到移動網絡(3G,EDGE等),類型字段將返回MOBILE[]

狀態字段提到連接狀態。

變量temp []將類型置於第0個位置,狀態位於第1個位置。我們需要檢查其第0位的MOBILE,因爲我們只需要跟蹤移動網絡連接。然後檢查第一個位置的狀態。

我在Android 5.0.1和Android 4.0.4中測試它工作正常。 更多信息here

+0

老兄,我很欣賞你的答案,但看起來你在回答之前沒有經過這個問題。 –

+0

那麼你的問題到底是什麼?你想要數據會話連接/斷開的大小或次數。你想澄清更多的問題 – Psypher

+0

老兄,數據斷開與會話斷開連接不同,我不想去工程部分,但如果你留在印度嘗試使用我們的代碼,看看你有多少次獲得數據斷開事件,然後您收到來自ur運營商的彈出消息,指示數據會話結束。我檢查了它,它不止一次。 –