我正在为一家安卓手机开发公司制作一个应用程序。我需要在后台运行应用程序,不应该有任何用户互动,如谷歌播放服务。所以我做了一个应用程序,并把它放在"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>