我有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
请帮助我,我的代码有什么问题?
答案 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"