我有一個應用程序,通過點擊通知中的操作按鈕發送短信。我想在短信發送後顯示Toast,但這不起作用。我擔心它與AsyncTask和/或BroadcastReceiver有關。如何在通過Android執行點擊操作後發送通知Toast?
發送短信的工作流程是這樣的:
- 我掃描的
AsyncTask
我的設備接觸和創建從AsyncTask
的的Notification
onPostExecute()
- 我用
NotificationCompat.Builder
用於創建Notification
我向
Notification
添加一個PendingIntent
,看起來像這樣:PendingIntent.getBroadcast(mContext, (int) _person.getId(), i, PendingIntent.FLAG_ONE_SHOT);
我送從
BroadcastReceiver
的短信onReceive()
我試圖從那裏發送吐司這樣的:
Toast.makeText(_context, "SMS sent!", Toast.LENGTH_SHORT).show();
我試着調試這個,但不幸的是Eclipse不會在onReceive()
中顯示變量的內容。
我還讀了一些關於「處理兼容性」的通知Google的開發人員網站here,但我無法找到一個教程,其中詳細解釋了這一點。
編輯:
我想這可能是有益的解釋是通過所有的課程通過什麼語境:
- 在我
MainActivity
我顯示PreferenceFragment
爲主要內容的 - 在那
PreferenceFragment
我叫新MyAsyncTask(getActivity()).execute();
,這樣我的MainActivity
應該是我的Context
- 在
MyAsyncTask
構造我通過這個來,我創建Notification
類,有保存爲一個成員(mContext
) - 我已經提到,其餘...
編輯2:
下面是有關這塊我BroadcastReceiver
的代碼,監聽Notification
的行動:
@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
好吧,短信發送,但吐司不會顯示。 _context只是從onReceive傳遞的上下文(Context _context,Intent _intent)。 (我爲傳遞的變量使用下劃線)我沒有收到錯誤消息。 – kaolick