У меня есть приложение, в котором я отправляю SMS, нажав кнопку действия в уведомлении. Я хочу показать Toast после отправки SMS, но это не сработает. Я боюсь, что это имеет какое-то отношение к AsyncTask и/или BroadcastReceiver.Как отправить тост из уведомления после выполнения действия при нажатии на Android?
Рабочий процесс отправки СМС выглядит следующим образом:
- Я просматриваю мои устройства контакты с
AsyncTask
и создатьNotification
изAsyncTask
«sonPostExecute()
- Я использую
NotificationCompat.Builder
для созданияNotification
Я добавлю
PendingIntent
вNotification
, который выглядит так:PendingIntent.getBroadcast(mContext, (int) _person.getId(), i, PendingIntent.FLAG_ONE_SHOT);
отправляю SMS из
BroadcastReceiver
«ыonReceive()
Я пытаюсь отправить Тост оттуда, как это:
Toast.makeText(_context, "SMS sent!", Toast.LENGTH_SHORT).show();
Я пытался отлаживаем это, но, к сожалению, Eclipse не показывает мне содержимое переменных в onReceive()
.
Я также прочитал кое-что о «совместимости совместимости» для сайтов разработчиков Google here, но я не смог найти учебник, где это объясняется более подробно.
EDIT:
Я предполагаю, что это может быть полезно, чтобы объяснить, что контекст передается через все классы:
- В моей
MainActivity
я отображающихPreferenceFragment
в качестве основного содержания - В этом
PreferenceFragment
я называю новыйMyAsyncTask(getActivity()).execute();
, так что мойMainActivity
должен быть моимContext
- В конструкторе
MyAsyncTask
я передать это класс, где я создатьNotification
и сохранить его там в качестве члена (mContext
) - остальное я уже упоминал ...
EDIT 2:
Вот соответствующий фрагмент кода моего BroadcastReceiver
, что прислушивается к действию Notification
«s:
@Override
public void onReceive(Context _context, Intent _intent)
{
String type = _intent.getStringExtra("type");
if (type.equals("SMS"))
{
String phoneNumber = _intent.getStringExtra("phoneNumber");
String message = _context.getResources().getString(
R.string.smstext);
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);
Toast.makeText(_context, "SMS sent!", Toast.LENGTH_SHORT).show();
}
}
Есть ошибки? Пожалуйста, опубликуйте его, если да. что такое _context и где он установлен? – Lenny
Просьба уточнить, что «это не работает» – Tyler
Хорошо, SMS отправляется, но Toast не отображается. _context - это просто Контекст, переданный из onReceive (Контекст _context, Intent _intent). (Я использую символы подчеркивания для переданных переменных) Я не получаю сообщение об ошибке. – kaolick