论坛首页 移动开发技术论坛

Android 控件之Service并开机自动启动

浏览 7679 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-27  
怎样让一个Service开机自动启动

AndroidManifest.xml配置文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.iaiai.activity" android:versionCode="1"
	android:versionName="1.0">
	<uses-sdk android:minSdkVersion="8" />
	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".IaiaiActivity" android:theme="@android:style/Theme.Dialog">
			<intent-filter>
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
		<receiver android:name=".IaiaiReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
			<intent-filter>
				<action android:name="android.intent.action.BOOT_COMPLETED" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</receiver>
		<service android:name=".IaiaiService" android:enabled="true" />
	</application>
	
	<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest>


main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<Button android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:id="@+id/button"
		android:text="开机自动启动" />
</LinearLayout>


IaiaiActivity.java类:
package com.iaiai.activity;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;

/**
 * 
 * <p>
 * Title: IaiaiActivity.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-6-26
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class IaiaiActivity extends Activity {

	private IaiaiService iaiaiService;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Intent intent = new Intent(this, IaiaiService.class);
		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

		startService(intent);
		stopService(intent);
	}

	private ServiceConnection serviecConnection = new ServiceConnection() {
		public void onServiceConnected(ComponentName classname, IBinder service) {
			iaiaiService = ((IaiaiService.IaiaiBinder) (service)).getService();
		}

		public void onServiceDisconnected(ComponentName classname) {
			iaiaiService = null;
		}
	};

}


IaiaiService.java类:
package com.iaiai.activity;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;

/**
 * 
 * <p>
 * Title: IaiaiService.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-6-27
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class IaiaiService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		Log.i("**************", "onBind");
		return null;
	}

	@Override
	public void onCreate() {
		Log.i("**************", "onCreate");
	}

	@Override
	public void onDestroy() {
		Log.i("**************", "onDestroy");
	}

	@Override
	public void onStart(Intent intent, int startId) {
		Log.i("**************", "onStart");
	}

	@Override
	public boolean onUnbind(Intent intent) {
		Log.i("**************", "onUnbind");
		return super.onUnbind(intent);
	}

	public class IaiaiBinder extends Binder {
		public IaiaiService getService() {
			return IaiaiService.this;
		}
	}

}


IaiaiReceiver.java类:
package com.iaiai.activity;

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

/**
 * 
 * <p>
 * Title: IaiaiReceiver.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-6-27
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class IaiaiReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		Intent serviceIntent = new Intent(context, IaiaiService.class);
		context.startService(serviceIntent);

		Intent activityIntent = new Intent(context, IaiaiActivity.class);
		activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(activityIntent);
	}

}


运行结果:
  • 大小: 26 KB
   发表时间:2011-07-01  
一个开机启动的应用程序,对用户而言,有没有办法设置为开机不启动,就像360的开机加速功能一样。
0 请登录后投票
   发表时间:2011-07-01  
hellodesigner 写道
一个开机启动的应用程序,对用户而言,有没有办法设置为开机不启动,就像360的开机加速功能一样。


当然可以,无非是多加了一个判断。。。。但是同样的还是要先接受 开机启动这个消息,然后通过再去判断 用户设定的值 

之后才能根据判断的结果 决定启不启动!
0 请登录后投票
   发表时间:2011-07-01  
楼主标准新手帖!
0 请登录后投票
   发表时间:2011-07-05  
直接看ANDRIOD的文档,有很多例子吧,不过LZ放这里分享也不错了!加油~
0 请登录后投票
   发表时间:2011-07-05  
简单,你注册BOOT_COMPLETE的intent就可以了。
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics