Я разработал приложение для получения текстового сообщения (смс) и, следовательно, я внедрил широковещательный приемник в фоновом режиме. Все работает отлично, за исключением того, что я не могу открыть приложение (любой класс активности) из фоновой службы. Я написал код, чтобы начать работу, но это не работает.Открытие приложения из фоновой службы
Я прошел множество подобных вопросов, но не смог найти решение этой проблемы.
Это фрагмент кода класса обслуживания:
public class Background extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
new BroadcastReceiver() {
String Number, Body;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Bundle bundle = intent.getExtras();
Object[] messages = (Object[]) bundle.get("pdus");
SmsMessage[] sms = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
for (SmsMessage msg : sms) {
Body = new StringBuilder().append(msg.getMessageBody())
.toString();
Number = new StringBuilder().append(
msg.getDisplayOriginatingAddress()).toString();
}
Calendar c = Calendar.getInstance();
// "5/11/2014 03:02:10"
String date = c.get(Calendar.DAY_OF_MONTH) + "/"
+ c.get(Calendar.MONTH) + "/" + c.get(Calendar.YEAR)
+ " " + c.get(Calendar.HOUR) + ":"
+ c.get(Calendar.MINUTE) + "" + c.get(Calendar.SECOND);
MessageData db = new MessageData(getApplicationContext());
try {
db.open();
db.createEntry(Number, Body, date, 0);
db.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent intent2 = new Intent(Background.this, CallingTimer.class);
intent2.setFlags(Intent.FLAG_FROM_BACKGROUND);
intent2.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
};
return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}