Как вывести активность на передний план?Ничего не работает изнутри BroadcastReceiver - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть действие, которое получает SMS, и я бы хотел, чтобы оно вышло на передний план, когда это произойдет.Неважно, если это тот же экземпляр или новый.Я перепробовал все, что нашел на этом сайте, даже другие флаги, такие как FLAG_ACTIVITY_NEW_TASK, работают нормально, но [пока] НИЧТО не выводит Activity на первый план.

public class SMSMessenger extends Activity {
    private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
    private BroadcastReceiver   yourReceiver;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        final IntentFilter theFilter = new IntentFilter();
        theFilter.addAction(ACTION);

        this.yourReceiver = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {

                // Bring activity to the foreground - doesn't work
                Intent I = new Intent(context, SMSMessenger.class);
                I.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                context.startActivity(I);
                //------------------------------------------------
            }
        };
        this.registerReceiver(this.yourReceiver, theFilter);
    }
}

Ответы [ 2 ]

0 голосов
/ 14 марта 2012

Попробуйте это ..

    myManager       = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    myNotification  = new Notification(R.drawable.alert1, "ALERT...!!", System.currentTimeMillis());
    myIntent        = new Intent(context, SmsMessanger.class);
    myPendingIntent = PendingIntent.getActivity(context, 0, myIntent, 0);
    myNotification.setLatestEventInfo(context, "NEW SMS ALERT...!!", "You have a new SMS alert..!! Click here to stop the alert tone...!!", myPendingIntent);
    myManager.notify(0, myNotification);

У меня это сработало ..!

когда мы нажимаем на уведомление, действие переносится на передний план.

0 голосов
/ 13 февраля 2012

Я верю, что вы ищете это. Создайте свой получатель в виде отдельного файла (MyBroadcastReceiver.java) и заставьте его запустить действие или всплывающее уведомление или что-то еще. В вашем AndroidManifest попробуйте добавить это:

<receiver android:name=".MyBroadcastReceiver"> 
    <intent-filter> 
        <action android:name=
            "android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver>

Также убедитесь, что вы включили разрешение SMS в свой AndroidManifest:

 <uses-permission android:name="android.permission.RECEIVE_SMS" />
...