2013-03-08 103 views
0

我试图在Android操作系统启动时启动名为“MainActivity”的主要活动(这是唯一的活动)。该应用安装在内部存储器上,但它说不幸的是,该应用(应用名称)已停止。我使用的引导接收代码如下在Android上启动应用程序

我的MainActivity代码在java文件

public class BootUpReceiver extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
      Intent i = new Intent(context, MainActivity.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
    } 
} 

AndroidManifest.xml中

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

     <receiver android:enabled="true" android:name=".BootUpReceiver" 
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 

    <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
    </receiver> 
+0

尝试添加后'<使用的许可机器人:名称= “android.permission.RECEIVE_BOOT_COMPLETED”/>'许可之前在AndroidManifest.xml应用标签和当应用程序崩溃时也会添加logcat结果 – 2013-03-08 07:11:17

+0

感谢您的快速回复,权限已添加到清单文件中。应用程序崩溃时,我重新启动Android TV盒,10秒后它说应用程序已停止。 – CodeAddiction 2013-03-08 07:13:27

+0

请删除这条线以下reciever标记,并将其添加到应用程序标记上方显示android:权限=“android.permission.RECEIVE_BOOT_COMPLETED” – 2013-03-08 07:23:07

回答

0

最后,搜索一段时间,对于一些后做了正确的事一个谁在这里卡住了。你需要做的是将onReceive函数注册到一个单独的包中,我在Logcat中得到的错误是Classnotfound,因为我将代码放置在MainActivity类和它的包中。只要我确实将onReceive函数更改为新包,应用程序就能完美地工作。

+0

在清单中添加接收器时,请使用完整名称空间(即包名称和广播类名称)添加接收器。它现在应该工作。 – JAPS 2013-10-21 10:52:03

-1

尝试:

public class BootUpReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if(action.equalsIgnoreCase("android.intent.action.BOOT_COMPLETED")) { 
      Intent i = new Intent(context, MainActivity.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     } 
    } 
} 

https://stackoverflow.com/a/11079306/6237295