您的位置:首页 > 移动开发 > Cocos引擎

安卓程序自启动的办法

2016-05-24 18:30 274 查看
千古文章一大抄,不过就是很少有个起作用的。

下面就是真正的 能够随系统启动的app的AndroidManifest.xml内容

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.cocos.testqd" android:versionCode="1" android:versionName="1.0" android:installLocation="internalOnly">
<uses-sdk android:minSdkVersion="9" />
<uses-feature android:glEsVersion="0x00020000" />
<application android:label="@string/app_name" android:icon="@drawable/icon">
<!-- Tell Cocos2dxActivity the name of our .so -->
<meta-data android:name="android.app.lib_name" android:value="cocos2dcpp" />
<activity android:name="org.cocos2dx.cpp.AppActivity" android:label="@string/app_name" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:enabled="true" android:exported="true" android:name="org.cocos2dx.cpp.BootCompletedReceiver"  android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
<supports-screens android:anyDensity="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.intent.action.BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
</manifest>


其中关键代码在于

<uses-permission android:name="android.intent.action.BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
以及

<receiver android:enabled="true" android:exported="true" android:name="org.cocos2dx.cpp.BootCompletedReceiver"  android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>


还有android:installLocation="internalOnly" 因为广播消息先于sd卡完成,所以,必须装在手机内存中。另外,安装之后的程序必须启动过一次!(再次更正:是必须启动后正常退出一次!在这里是:Director::getInstance()->end();)

然后要在项目目录下,以cocos项目为例

testqd\proj.android\src\org\cocos2dx\cpp 新建一个文件BootCompletedReceiver.java

其内容如下

package org.cocos2dx.cpp;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
{
Intent newIntent = new Intent(context, AppActivity.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);
}
}
}


然后打包,编译,运行就启动起来了。之前网上搜的一堆都不行,无奈google,凡是见到点不同的都加上去。。最后终于成功了。当然我也不知道之前少了哪里。要么没反应,要么弹出来个框 很抱歉 XXX停止运行。做个备份,造福后人
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d-x android app apk