1

我有一个广播接收器,它接收互联网连接..一旦它找不到任何连接,它就会打开我的启动活动,说“没有互联网连接”......直到现在一切正常,但是当用户放置应用程序时使用设备主页按钮进入后台,然后关闭互联网连接,当应用程序在后台运行时,启动活动进入前台。我不希望这种情况发生,启动活动应该打开,但只能在后台打开。

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


    //  SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);

    boolean isNetworkDown = intent.getBooleanExtra(
        ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);    

    if (isNetworkDown) {
      Log.d(TAG, "onReceive: NOT connected, stopping UpdaterService");
      Intent myintent=new Intent(context,NoConnectivity.class);
      myintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(myintent);

    } else 

    {

      Log.d(TAG, "onReceive: connected, starting UpdaterService");
      NoConnectivity.h.sendEmptyMessage(0);      


    }
  }
4

2 回答 2

1

startActivity 将自动将活动带到您正在查看的活动之上的前台。用户可以使用后退按钮返回上一个。这是通常的工作方式。

但是,您可以使用moveTaskToBack(true)将活动发送到后台。

是功能说明。

编辑

查看此问题并使用解决方案查看您的活动是否在后台。如果是,则使用我上面建议的方法将新活动发送到后台。

于 2012-07-11T05:55:13.147 回答
0
if (isNetworkDown) {
    Log.d(TAG, "onReceive: NOT connected, stopping UpdaterService");

    // Check the foreground package
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(1);
    ComponentName topActivity = runningTasks.get(0).topActivity;
    String foregroundPackageName = topActivity.getPackageName();
    if(foregroundPackageName.equals(context.getPackageName()) {
        Intent myintent = new Intent(context,NoConnectivity.class);
        myintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(myintent);
    }
}
于 2014-04-09T20:42:05.260 回答