活动不会在启动完成时启动

时间:2016-11-04 09:09:24

标签: android

我有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" />

和布局代码

inputString

请帮助我,我的代码有什么问题?

2 个答案:

答案 0 :(得分: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)上,您需要启动一次主要活动,因为如果应用是新手机并且从不通话,手机不会激活广播接收器被打开了。即使在更新应用程序后,您也需要这样做。

答案 1 :(得分: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"