zoukankan      html  css  js  c++  java
  • Context.startActivity出现AndroidRuntimeException

    昨天做了一个Activity的启动动画,效果是点击桌面图标先出现动画后启动Activity,今天想让其开机启动,于是我写了一个类BootReceiver.java用于接收开机广播,启动动画效果,代码如下:

    public class BootReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
                Log.d("splashscreen", "SplashScreen---------->>>>>>>>BootReceiver");
                Intent splash=new Intent(context,SplashScreen.class);
                context.startActivity(splash);
            }
        }

    }

    调试程序的时候发现其并未开机启动,使用adb logcat发现报了如下的错误。

    E/JavaBinder( 2252): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)

    E/JavaBinder( 2252): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    E/JavaBinder( 2252):     at android.app.ContextImpl.startActivity(ContextImpl.java:622)
    E/JavaBinder( 2252):     at com.android.server.ConnectivityService.sendBugReportToServer(ConnectivityService.java:2055)
    E/JavaBinder( 2252):     at com.android.server.ConnectivityService.startUsingNetworkFeature(ConnectivityService.java:725)
    E/JavaBinder( 2252):     at android.net.IConnectivityManager$Stub.onTransact(IConnectivityManager.java:135)
    E/JavaBinder( 2252):     at android.os.Binder.execTransact(Binder.java:288)
    E/JavaBinder( 2252):     at dalvik.system.NativeStart.run(Native Method)

    借用高人分析:
    Context 中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的 startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。在context.startActivity(splash)之前加上
    splash.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    这样就可以在新的task里面启动这个Activity了。 
    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    gdb typeid 详解
    make报错
    期末作业验收
    个人作业——软件工程实践总结作业
    原型设计(结对第一次)
    团队展示(团队)
    第二次作业——个人项目实战(sudoku)
    软件工程实践第一次作业--准备
    C++第一次课堂作业 circle
    第四次作业 计算器第二部分(未完)
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5834740.html
Copyright © 2011-2022 走看看