没有GUI的Android Activity

时间:2009-02-08 17:29:48

标签: android user-interface broadcastreceiver android-service intentfilter

我创建了一个只能从链接启动的活动(使用意图过滤器。)我不希望这个活动有一个GUI - 我只是想让它启动一个服务并在酒吧。我试图在我的服务中为链接设置intent过滤器,但这不起作用。有没有更好的方法来回答意图过滤器 - 或者我可以让我的活动没有GUI吗? 对不起,如果我困惑,艾萨克

4 个答案:

答案 0 :(得分:96)

回应之前的回复,您不应使用广播接收器。

在同样的情况下,我所做的是如此宣布主题:

<activity android:name="MyActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.NoDisplay">

答案 1 :(得分:19)

您最好的选择似乎是使用BroadcastReceiver。您可以创建一个新的BroadcastReceiver来侦听Intent以触发您的通知并启动您的服务:

public class MyIntentReceiver extends BroadcastReceiver {    
  @Override 
  public void onReceive(Context _context, Intent _intent) {
    if (_intent.getAction().equals(MY_INTENT)) {
      // TODO Broadcast a notification
      _context.startService(new Intent(_context, MyService.class));
    }
  }    
}

您可以直接在应用程序清单中注册此IntentReceiver,而无需将其包含在活动中:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.domain.myapplication">
  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:enabled="true" android:name="MyService"></service>
    <receiver android:enabled="true" android:name="MyIntentReceiver">
      <intent-filter>
        <action android:name="MY_INTENT" />
      </intent-filter>
    </receiver>
  </application>
</manifest> 

答案 2 :(得分:4)

我不确定服务是否可行,但广播接收器肯定不会。 Url是使用startActivity()启动的。广播接收机无法对此作出回应。

http://developer.android.com/reference/android/content/BroadcastReceiver.html

FTA: 请注意,尽管Intent类用于发送和接收这些广播,但此处的Intent广播机制与用于使用Context.startActivity()启动活动的Intent完全分开。 BroadcastReceiver无法查看或捕获与startActivity()一起使用的Intent;同样,当你广播一个意图时,你永远不会找到或开始一个活动。

答案 3 :(得分:3)

使用服务。我肯定工作。当您单击该程序时,它将在没有任何GUI的情况下完成其工作。使用pendintgintent ... getService(MySerice.class ....)。然后,创建一个扩展Service类的新类MyService。在MyService.class中,覆盖onStart()并执行您想做的任何事情。