2016-11-04 78 views
0

Activity活动不开始在引导完成

public class I1 extends Activity { 

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

} 

BroadcastReceiver

public class I2 extends BroadcastReceiver { 

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

} 

为什么我的活动开始于启动完成?这就是AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.mypackage" 
    android:versionCode="1" 
    android:versionName="1.6" > 

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

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="25" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > 

     <activity 
      android:name=".I1" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver 
      android:name=".I2" 
      android:enabled="true" 
      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> 

    </application> 

</manifest> 

代码和布局代码

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:keepScreenOn="true" 
    android:background="#000000" 
    tools:context="com.mypackage.Main" /> 

你可以帮我吗,有什么错我的代码?

+0

请用OS指定设备名称。 –

+0

收到意图?有什么异常吗?最后一个,是SD卡上的应用程序? – AxelH

+0

没有记录任何异常。我使用USB调试logcat。我试图在手机和SD卡上安装应用程序。意图没有收到。电话 - 飞利浦Android 4.0.3。 –

回答

1

这个问题真的令人难以置信。我有两个相同的电话 - 飞利浦Android 4.0.3。其中之一,我测试了我的应用程序有错误BOOT_COMPLETED行动。 此代码是最好的,我认为

<receiver 
    android:name=".I2" > 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

和广播接收器

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

,它也适用!

感谢用户@AxelH!


此外,在某些电话上(例如ZTE Blade HN),您需要启动一次主要活动,因为如果应用程序是新的并且从未打开过,则手机不会让广播接收器被激活。即使在更新应用程序后,您也需要这样做。

0

请尝试以下

<receiver android:name=".I2" android:enabled="true" android:exported="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
    </intent-filter> 
</receiver> 

另外一点需要注意

如果在外部存储(SD卡)安装在您的应用程序,你将永远不会收到启动完成动作。所以你必须在清单标签中指定以下内容。

android:installLocation="internalOnly" 
+0

对不起,它仍然不起作用。什么都没发生。我删除了SD卡,并在手机内存中重新安装了应用程序。 –

+1

我只会不同意'永远不会接受'。这是有效的(当我进行测试时它工作正常),但是如果意图在卡安装之前发送,则会发生变化。 – AxelH