Android應用程序顯示歡迎畫面並開機自啟動


整理一下學來的兩種方法:

顯示歡迎畫面方法如下:

首先新建一個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源碼中修改。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM