imastudent313
2015-04-13 08:27
采纳率: 64.3%
浏览 3.5k

android在service中启动Activity问题

问什么我在service中启动activity,新的activity闪了一下就被原来的覆盖了?附源码:
这段代码在service中,想弹出“激活设备管理器”页面的功能
Intent in = new Intent();
in.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
in.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
context.startActivity(in);

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • CarryDraw 2015-04-16 07:47
    已采纳

    在跳转的时候把当前的activity finish()掉 。

    点赞 评论
  • 扯线木偶人 2015-04-13 09:00

    你的service的启动者用的哪个方式启动的,bind和start不同,试着用start看下
    还有,检查一下你在service的哪个回调方法里面启动的

    点赞 评论
  • imastudent313 2015-04-13 09:38

    谢谢您的回答,我现在找到原因了,但是还没找到解决办法。问题出在in.addFlag(Intent.FLAG_ACTIVITY_NEW_TASK)这句话,
    (1)当在activity中启动activity是没有问题的,但service启动activity时报错并提示加上in.addFlag(Intent.FLAG_ACTIVITY_NEW_TASK)这句;
    (2)加上这句后,就出现所说的问题,新的activity闪一下就回到原来的旧activity了。
    (3)目前还没有找到解决办法 T.T

    点赞 评论
  • mqiaohaibin 2015-04-14 01:31

    你能把错误的日志粘出来?

    点赞 评论
  • 戰_ 2018-02-06 09:49
      设备管理器的激活页面是在 系统 Setting  里面的, 在类 DeviceAdminAdd 下面我找到了下面代码:
    
    
    
        if ((getIntent().getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
            Log.w(TAG, "Cannot start ADD_DEVICE_ADMIN as a new task");
            finish();
            return;
        }
    

    从这里可以知道, 设备管理器激活页面是不准许用一个新的Task来启动的。

    点赞 评论

相关推荐 更多相似问题