开机自启动,当时在开发Qt的时候主要是通过写注册表来实现的,也就是把你的软件名称的路径写入注册表中,然后当电脑启动的时候,就会启动你的软件!呵呵。。。PC端是这样,那手机端是怎么样呢?今天看到博客说是当手机启动的时候会发出一个广播ACTION_BOOT_COMPELETE,因此我们需要做就是接受这个广播,然后再执行我们的操作,就是启动第一个activity然后就可以啦!
ok,废话不多说,直接上代码。
1,首先我们要定义一个类来接收广播
Public class autostartReceiver extends BoradcastReceiver{
@Override
Public void onReceive(Context context,Intent intent){
if(Intent.getAction().equals("android.intent.action.BOOT_COMPELETED")){
Intent intent1=new Intent();
intent1.setClass(context,MainActivity.calss);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
2,然后在AndroidManifest.xml中定义改类,并添加开机权限
<receiver android:name=".autostartReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPELETED"/>
<category android:name="android.intent.category.LAUNCHER"/>
</Intent-filter>
</receiver>
启动开机权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPELETED"/>
ok,上面就是关于android开机自启动的,下面我也给大家讲述一下Qt开机自启动的方法吧!
Qt中主要是用到QSetting这个类来进行开机自启动的处理,要详细查看的话就去看帮助文档,再详细不过,这里不讲述。
这里写一个函数来,参数是bool型的,true就自启动,false不自启动
直接上代码:
#define path "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" //这是注册表的地址
void autoStart(bool isStart)
{
QString app_name = QApplication::applicationName();
QSettings setting = new QSettting(path,Qsettings::NativeFormat);
if(isStart)
{
QString app_path = QApplication::applicationPath();
setting->setValue(app_name,app_path.replace("/","\\"));
}
else
{setting->remove(app_name);}
}