首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

一个关于android开机自启的有关问题(送分了)

2012-06-17 
一个关于android开机自启的问题(送分了)android开机事件会发送一个叫做Android.intent.action.BOOT_COMPLE

一个关于android开机自启的问题(送分了)
android开机事件会发送一个叫做Android.intent.action.BOOT_COMPLETED的广播信息,我的程序会在接收到这个监听的时候开启我的应用.
代码如下:

开启自启的类

Java code
public class Hello extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }}


接收Android.intent.action.BOOT_COMPLETED的广播信息的类

Java code
public class StartupReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        // TODO Auto-generated method stub        Intent i = new Intent(context,Hello.class);        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        //将intent以startActivity传送给操作系统        context.startActivity(i);    }}


AndroidManifest.xml
XML code
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.practice.autostart"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="7" />    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />    <application        android:icon="@drawable/icon"        android:label="@string/app_name" >        <activity            android:name=".AutoStartActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <receiver android:name=".AutoStartBroadcast" >            <intent-filter>                <action android:name="android.intent.action.BOOT_COMPLETED" />            </intent-filter>        </receiver>    </application></manifest>



问题:
我桌子上有4台机器
1.三星5660 android版本2.2.1 没有效果
2.山寨三星xxx android版本2.3.3 有效果
3.山寨HTC xx android版本 2.3.4 有效果
4.htcXXX android版本2.3.3 没有效果

....
请问这开机自启的代码 和android版本有关系没?或者跟机器设置有关系没?
有没有其他开机自启的方法?360肯定不是用的此方法吧...任何机器都能自动启动

[解决办法]
<receiver android:name=".AutoStartBroadcast" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>

看看这样成吗?
[解决办法]
你在广播里输出一下log,未必是接收不到广播,或者只是启动不了Activity,
另外,一些安全软件,360卫士什么的可能会阻止你的自启动
[解决办法]
sdcard的装载有可能在系统广播发出后才完成,如果你的程序装在sdcard里面,就有可能来不及收到广播。

有个偏方:可以设置一些经常会触发的广播接收器,在里面完成启动。

例如:如果需要网络的程序,就可以接收网络状态改变的广播

热点排行