Страница 1 из 1

Перередача данных с BroadcastReceiver в Activity

Добавлено: 07 фев 2015, 18:07
dagget
Привет. У меня вопрос следующего плана:
программа отслеживает входящие и исходящие звонки в фоновом режиме с помощью класса, который унаследован от BroadcastReceiver и после завершения звонка должна стартовать Activity в которой должен быть написан номер телефона звонившого. С отслеживанием звонков и запуском Activity проблем не возникло, а передать номер телефона в активность никак не получается.
Подскажите как правильно передавать данные в таких случаях. Спасибо.

Re: Перередача данных с BroadcastReceiver в Activity

Добавлено: 09 фев 2015, 00:09
dagget
Снова привет. Так как ответа пока не последовало приведу код который у меня єсть по етому вопросу. Сейчас исполюзую не BroadcastReceiver, а просто сервис.
Есть две активности первая запускает сервис который прослушивает входящие звонки, вторую запускает сервис после входящего звонка.
Главная активность:

Код: Выделить всё

public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        startService(new Intent(this, CollService.class));
    }
}
сам сервис :

Код: Выделить всё

public class CollService extends Service{

    @Override
    public void onCreate() {
        super.onCreate();

        TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        TelephonyMgr.listen(new TeleListener(),PhoneStateListener.LISTEN_CALL_STATE);
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    class TeleListener extends PhoneStateListener {

        public void onCallStateChanged(int state, String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:
                    // CALL_STATE_IDLE;
                    Toast.makeText(getApplicationContext(), "CALL_STATE_IDLE " + incomingNumber, Toast.LENGTH_LONG).show();

                  Intent  mIntent = new Intent(CollService.this, TwoActivity.class);
                    mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(mIntent);

                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    // CALL_STATE_OFFHOOK;
                    Toast.makeText(getApplicationContext(), "CALL_STATE_OFFHOOK ",Toast.LENGTH_LONG).show();
                    break;
                case TelephonyManager.CALL_STATE_RINGING:

                    // CALL_STATE_RINGING

                    Toast.makeText(getApplicationContext(), incomingNumber + " номер",Toast.LENGTH_LONG).show();
                    //Toast.makeText(getApplicationContext(), "CALL_STATE_RINGING",Toast.LENGTH_LONG).show();

                   // Intent intent = new Intent(CollService.this, TwoActivity.class);
                  //  intent.putExtra("number", incomingNumber);

                    break;
                default:
                    break;
            }
        }
}
}
манифест приложения:

Код: Выделить всё

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >


        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".TwoActivity"></activity>
        <service android:name=".CollService"></service>
    </application>

</manifest>
на вторую активность нужно передать номер телефона звонившего. Чево только не пробовал ничево не получаетса.