Вызов активности из Broadcast Receiver

Я новичок в Android, и я разрабатываю приложение, в котором BrocastReceiver запускается всякий раз, когда пользователь делает вызов... я пытаюсь отслеживать состояние сети внутри широковещательного приемника... и я пытаюсь начать действие, когда пользователь вешает трубку... но, к сожалению, выдает ошибку... пожалуйста, дайте мне знать, как это сделать...

Мой широковещательный приемник запускается правильно, когда пользователь звонит... но я не знаю, как контролировать сеть внутри BroadcastReceiver, когда пользователь разговаривает по телефону... и вызывать активность из BroadcastReceiver, когда пользователь вешает трубку. ..

Пожалуйста, дайте мне знать, как этого добиться... Заранее спасибо.. :-)

мой код...

  1. Код широковещательного приемника

     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>
    

Мой широковещательный приемник запускается правильно, когда пользователь звонит... но я не знаю, как контролировать сеть, когда пользователь разговаривает по телефону... и вызывать действие, когда пользователь вешает трубку...

Пожалуйста, дайте мне знать, как этого добиться... Заранее спасибо.. :-)


person Sachidananda Naik    schedule 28.02.2013    source источник


Ответы (1)


Вам нужно зарегистрировать другого получателя, чтобы принять ACTION_PHONE_STATE_CHANGED. Это может быть дубликат Обнаружение исходящего вызова и события зависания вызова в андроид

person Gardner Bickford    schedule 28.02.2013