Android应用程序显示欢迎画面并开机自启动
16lz
2021-01-23
整理一下学来的两种方法:
显示欢迎画面方法如下:
首先新建一个Activity作为欢迎画面,将Manifest.xml中本来在Mainctivity注册文件下的
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
放到新注册的Activity下,使其首先启动。
Activity的代码如下:
import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Window;//欢迎界面@SuppressLint("HandlerLeak")public class WelcomeActivity extends Activity{ private static final String S = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 setContentView(R.layout.welcome); //启动线程 Thread mt = new Thread(mThread); mt.start(); } private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if((String)msg.obj == S) { //跳转 Intent intent = new Intent(); intent.setClass(WelcomeActivity.this, MainActivity.class); WelcomeActivity.this.startActivity(intent); finish(); } } }; Runnable mThread = new Runnable() { @Override public void run() { // TODO Auto-generated method stub Message msg = mHandler.obtainMessage(); //延时3秒 try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } msg.obj = S; mHandler.sendMessage(msg); } };}
首先使窗口全屏,显示画面,然后打开一个线程,在线程中延时3秒发送一个消息,在消息处理中跳转到Mainctivity并且关闭WelcomeActivity。这样就实现了开机欢迎画面出现3秒的效果。
使程序自启动的方法如下:
首先增加接收广播机制,用来接收系统启动时的广播,接收到之后启动程序:
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class BootBroadcastReceiver extends BroadcastReceiver { static final String action_boot="android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(action_boot)){ Intent ootStartIntent=new Intent(context,WelcomeActivity.class); ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(ootStartIntent); } } }
添加权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"> </uses-permission>
注册:
<receiver android:name=".BootBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> </receiver>
注:这种系统自启动的方法完全在应用中实现,要等系统完全启动出现主界面之后再启动,就跟360安全卫士这样的开机启动功能。如果使自己的应用代替系统自己的Launcher,开机直接进入程序或者甚至自定义开机画面,则要在Android源码中修改。
更多相关文章
- Android Camera子系统之源代码View
- Android 的系统属性(SystemProperties)设置分析
- (2) 搭建 Android 系统开发环境
- android:sharedUserId="android.uid.system" 使用系统签名+SNTP
- Android 系统启动过程简略分析
- android图形系统
- Android - 多线程 - AsyncTask
- android Q 显示系统(一) VSync