2013-06-11 1 views
2

У меня есть два класса, которые являются MainActivity и MyBroadcastReceiver. BroadcastReceiver определяет, включен или выключен экран телефона. Мое желание состоит в том, чтобы запускать мое приложение всякий раз, когда отключена блокировка экрана. Я имею в виду, что я хочу, чтобы мое приложение было на передней панели, когда блокировка телефона была выпущена.Как переносить приложение из фона на передний план через BroadcastReciver

Вот мой класс активности:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     registerReceiver(); 
    } 

    private void registerReceiver(){ 
     IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
     filter.addAction(Intent.ACTION_SCREEN_OFF); 
     BroadcastReceiver mReceiver = new MyPhoneReceiver(); 
     registerReceiver(mReceiver, filter); 
    } 
} 

И вот мой радиовещательный приемник:

public class MyPhoneReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 

    if(pm.isScreenOn()){ 
     //Bring application front 

    } 
} 

}

Что я должен сделать для того, чтобы выполнить эту операцию в моем вещательный приемник?

Заранее спасибо.

ответ

0

ли это внутри OnReceive метода:

Intent activityIntent = new Intent(this, MainActivity.class); 
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(activityIntent); 

Вы, возможно, потребуется настроить addFlags назвать для ваших конкретных потребностей!

1

Выполните следующие действия в вашем OnReceive способе BroadcastReceiver

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent newIntent = new Intent(); 
    newIntent.setClassName("com.your.package", "com.your.package.MainActivity"); 
    newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    context.startActivity(newIntent); 
} 

вам нужен флаг «FLAG_ACTIVITY_NEW_TASK» для вашего намерения в противном случае будет фатальным исключением броска.

Флаг «FLAG_ACTIVITY_SINGLE_TOP» предназначен для переноса вашего MainActivity на фронт, и вы можете продолжать делать то, что от вас требуется, переопределяя метод onNewIntent в MainActivity.

@Override 
protected void onNewIntent(Intent intent) { 
    // continue with your work here 
} 
+0

Привет, я новый андроид и xamarin, у меня такая же проблема в моем приложении, я хочу открыть приложение во время приема вызова. Я не знаю точно, что мне нужно дать в «com.your.package», «com.your.package.MainActivity», можете ли вы мне помочь? Мне нужно установить что-либо в манифесте? – Rajesh

+0

Посмотрите в файле manifest.xml и найдите

 Смежные вопросы

  • Нет связанных вопросов^_^