我可以帮您翻译成中文:我可以在没有活动或GUI的情况下启动Android服务吗?

5

我的目标Android版本是4.1.2。我创建了一个简单的Android服务,它将在启动时显示Toast。但此应用程序不应有任何GUI界面。我只能成功地从一个在启动时显示GUI的活动中运行此服务。

public class MyServices extends Service {
private MediaRecorder recorder = null;
@Override
public IBinder onBind(Intent intent) {

    return null;

}
public int onStartCommand(Intent intent, int flags, int StartId)
{

    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();

}
}
2个回答

4

什么是 RebootReceiver? - Squonk
据我所知,执行此广播接收器不需要任何GUI。该接收器会在您重新启动设备时响应,而不是在单击启动器图标时响应。 - Ajay S
1
不行 - 这是一项安全功能,旨在防止恶意软件。您无法在Android v4上启动服务或自动注册BroadcastReceiver而没有用户交互。 OP想创建一个没有UI的应用程序并启动一个服务 - 这是不可能的。抱歉,我确实投了反对票,因为您的答案行不通且具有误导性。 - Squonk
该OP明确表示:“但是此应用程序不应具有任何GUI界面。”- 另外,请阅读http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html的1.4点。 - Squonk
1
我已经阅读了@Squonk,谢谢你让我知道。我已经更新了答案。 - Ajay S
显示剩余3条评论

0

首先,您需要创建一个接收器:

public class BootCompletedReceiver extends BroadcastReceiver {

final static String TAG = "BootCompletedReceiver";

@Override
public void onReceive(Context context, Intent arg1) {
    Log.w(TAG, "starting service...");
    context.startService(new Intent(context, MyServices.class));
}

}

然后在你的AndroidManifest.xml文件中添加权限。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

并注册意图接收器:

<receiver android:name=".BootCompletedReceiver" >
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>

完成此操作后,您的应用程序(Application类)将与服务一起运行,但没有活动,请不要将您的应用程序放在SD卡上(APP2SD或类似的东西),因为它必须驻留在主存储器中,以便在启动完成后立即可用。

1
除非应用程序有一个主/启动“Activity”,并且用户已经启动它,否则这个不会起作用。 - Squonk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接