Search code examples
androidandroid-intentandroid-activitybroadcastreceiverandroid-service

Broadcastreceiver does not start activity


My application basically detects screen unlock and pops up a toast. Its working fine with a toast but when I implent an Intent and call another activity it crashes..

package com.androidexample.screenonoff;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


public class AEScreenOnOffService extends Service  {
    BroadcastReceiver mReceiver=null;

        @Override
        public void onCreate() {
            super.onCreate();

            // Toast.makeText(getBaseContext(), "Service on create", Toast.LENGTH_SHORT).show();

            // Register receiver that handles screen on and screen off logic
            IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
            filter.addAction(Intent.ACTION_SCREEN_OFF);
            mReceiver = new AEScreenOnOffReceiver();
            registerReceiver(mReceiver, filter);

        }

        @Override
        public void onStart(Intent intent, int startId) { 

            boolean screenOn = false;

            try{
                // Get ON/OFF values sent from receiver ( AEScreenOnOffReceiver.java ) 
                screenOn = intent.getBooleanExtra("screen_state", false);

            }catch(Exception e){}

             //  Toast.makeText(getBaseContext(), "Service on start :"+screenOn, 
                    //Toast.LENGTH_SHORT).show();

            if (!screenOn) {

                // your code here
                // Some time required to start any service
                Toast.makeText(getBaseContext(), "Begin ", Toast.LENGTH_LONG).show();

Here I am adding an intent to start an activity.

Intent intent = new Intent(AEScreenOnOffService.this,postlockscreen.class);
            startActivity(intent);

            } else {

                // your code here
                // Some time required to stop any service to save battery consumption
                //Toast.makeText(getBaseContext(), "Screen off,", Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
        }
}

I have checked the xml for the new activity the class all seems to be fine but nothing seems to be working.


Solution

  • try this way

      Intent yourintent = new Intent(this, MyActivity.class);
                yourintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(yourintent);
    

    Hope this helps you