Я новичок в Android, и я разрабатываю приложение, в котором BrocastReceiver запускается всякий раз, когда пользователь делает вызов... я пытаюсь отслеживать состояние сети внутри широковещательного приемника... и я пытаюсь начать действие, когда пользователь вешает трубку... но, к сожалению, выдает ошибку... пожалуйста, дайте мне знать, как это сделать...
Мой широковещательный приемник запускается правильно, когда пользователь звонит... но я не знаю, как контролировать сеть внутри BroadcastReceiver, когда пользователь разговаривает по телефону... и вызывать активность из BroadcastReceiver, когда пользователь вешает трубку. ..
Пожалуйста, дайте мне знать, как этого добиться... Заранее спасибо.. :-)
мой код...
Код широковещательного приемника
public class MoniterNetworkStatus extends BroadcastReceiver{ private ConnectivityManager connectivityManager; private NetworkInfo info; @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Monitering Network Status !!!", Toast.LENGTH_LONG).show(); boolean networkStatus = false; TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); Intent activityIntent = new Intent(context, NetworkStatusActivity.class); // I am monitoring the network status as long as user is on call... while(telephonyManager.getCallState()!= TelephonyManager.CALL_STATE_IDLE){ info = connectivityManager.getActiveNetworkInfo(); if(info == null){ networkStatus = false; }else if(info.getType() == ConnectivityManager.TYPE_MOBILE){ networkStatus = info.isConnected(); }else{ networkStatus = false; } } //Putting the network details in to the activity. activityIntent.putExtra("operatorName", telephonyManager.getNetworkOperatorName()); activityIntent.putExtra("networkStatus", networkStatus); // starting the activity context.startActivity(activityIntent); abortBroadcast(); } }
Мой файл манифеста
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" /> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!-- <uses-permission android:name="android.permission.INTERNET"/> --> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.abc.activity.NetworkStatusActivity"></activity> <receiver android:name="com.abc.broadcastreceiver.MoniterNetworkStatus" android:enabled="true" > <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> <action android:name="android.intent.action.ANSWER" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application>
Мой широковещательный приемник запускается правильно, когда пользователь звонит... но я не знаю, как контролировать сеть, когда пользователь разговаривает по телефону... и вызывать действие, когда пользователь вешает трубку...
Пожалуйста, дайте мне знать, как этого добиться... Заранее спасибо.. :-)