系统应用程序自动启动



我正在为一家安卓手机开发公司制作一个应用程序。我需要在后台运行应用程序,不应该有任何用户互动,如谷歌播放服务。所以我做了一个应用程序,并把它放在"system/app"中,这样用户就不能卸载应用程序,但我需要打开应用程序才能在后台运行服务,我怎么能跳过这个呢

看这里:Android BroadcastReceiver在启动时-当Activity在后台时保持运行

一旦你有广播接收器,当系统启动时被调用,你应该启动粘性服务。看这里:START_STICKY和START_NOT_STICKY

这样您的应用程序将在每次系统启动时启动。

我认为你应该注册一些broadcastreceiver,这样它就会启动你的应用程序。你可以使用boot_completed动作,例如,像这样:

public class Autostart extends BroadcastReceiver 
{
    public void onReceive(Context arg0, Intent arg1) 
    {
        Log.i("Autostart", "**********started************");
    }
}

和舱单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pack.saltriver" android:versionCode="1" android:versionName="1.0"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <receiver android:name=".Autostart">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
    </application>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
</manifest>

但是你可以使用不同的类型,你只需要修改意图的名字。这里是所有BroadcastReceiver Intent的列表。

有许多意图过滤器,你可以使用后启动完成或电源插入。

在这两种情况下,你都可以使用广播接收器来启动活动。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pack.saltriver" android:versionCode="1" android:versionName="1.0"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <receiver android:name=".tart">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

最新更新