Привет. У меня вопрос следующего плана:
программа отслеживает входящие и исходящие звонки в фоновом режиме с помощью класса, который унаследован от BroadcastReceiver и после завершения звонка должна стартовать Activity в которой должен быть написан номер телефона звонившого. С отслеживанием звонков и запуском Activity проблем не возникло, а передать номер телефона в активность никак не получается.
Подскажите как правильно передавать данные в таких случаях. Спасибо.
Перередача данных с BroadcastReceiver в Activity
Re: Перередача данных с BroadcastReceiver в Activity
Снова привет. Так как ответа пока не последовало приведу код который у меня єсть по етому вопросу. Сейчас исполюзую не 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>