Страница 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>
на вторую активность нужно передать номер телефона звонившего. Чево только не пробовал ничево не получаетса.