GUI가없는 안드로이드 활동
-
22-08-2019 - |
문제
나는 링크에서만 출시 될 활동을 만들었습니다 (의도 필터를 사용하여)이 활동에 GUI를 갖기를 원하지 않습니다. 단지 서비스를 시작하고 막대에 알림을 넣기를 원합니다. 서비스에 링크에 대한 의도 필터를 넣으려고했지만 작동하지 않습니다. 의도 필터에 대답 할 더 좋은 일이 있습니까? 아니면 내 활동 만 GUI가 없도록 만들 수 있습니까?
혼란 스럽다면 죄송합니다, Isaac
해결책
최선의 방법은 사용하는 것 같습니다 BroadcastReceiver
. 알림을 트리거하고 다음과 같이 서비스를 시작하려는 의도를 듣는 새로운 Broadcastreceiver를 만들 수 있습니다.
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>
다른 팁
이전 응답에 반향하면 방송 수신기를 사용해서는 안됩니다.
같은 상황에서 내가 한 일은 주제를 다음과 같이 선언하는 것이 었습니다.
<activity android:name="MyActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoDisplay">
서비스가 작동하는지 확실하지 않지만 방송 수신기는 확실히 그렇지 않을 것입니다. URL은 startActivity ()를 사용하여 시작됩니다. 방송 수신기는 이에 응답 할 수 없습니다.
http://developer.android.com/reference/android/content/broadcastreceiver.html
FTA : 의도 클래스는 이러한 방송을 보내고 수신하는 데 사용되지만, 의도 방송 메커니즘은 컨텍스트로 활동을 시작하는 데 사용되는 의도와 완전히 분리되어 있습니다. Broadcastreceiver가 startActivity ()와 함께 사용되는 의도를 보거나 캡처 할 수있는 방법은 없습니다. 마찬가지로, 의도를 방송 할 때는 활동을 찾거나 시작하지 않습니다.
서비스 사용. 나는 확실히 일한다. 프로그램을 클릭하면 GUI없이 작업을 수행합니다. pendintgintent ... getService (myserice.class ....)를 사용하십시오. 그런 다음 서비스 클래스를 확장하는 새 클래스 MyService를 만듭니다. myservice.class에서 onstart ()를 재정의하고 원하는 모든 것을 수행하십시오.