应用程序在后台运行时接收Intent(服务应用程序)

时间:2016-06-27 14:53:12

标签: android android-intent android-service background-process

我正在开发一款将在后台线程(服务应用)上运行的Android应用。我想通过另一个应用程序的Intent(ACTION_SEND)从另一个应用程序接收一些数据。

当应用程序处于后台线程时,应用程序是否可以接收意图。

2 个答案:

答案 0 :(得分:1)

  

我正在开发一款将在后台线程(服务应用)上运行的Android应用。

应用程序无法在后台线程上运行。应用可能拥有后台主题。

  

我想通过另一个应用程序的Intent(ACTION_SEND)从另一个应用程序接收一些数据。

ACTION_SEND只会路由到您的活动。欢迎您的活动在此时执行涉及后台线程的操作。如果您使用Theme.Translucent.NoTitleBar作为活动主题并在finish()内调用onCreate(),则可以让活动没有用户界面。因此,从用户的角度来看,似乎ACTION_SEND正在后台处理,即使实际上并非如此。

答案 1 :(得分:1)

您可以在接收“ACTION_SEND intent”时实现一个没有自己的gui的Activity。然后,该活动可以通知您正在运行的后台服务:

清单

<manifest ...>
    <application ...>
        <activity android:name=".MyActionSendReceiver">

            <intent-filter>
                <action android:name="android.intent.action.SEND" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <!-- file must have mimeType to match -->
                <data android:mimeType="*/*" />
                <data android:scheme="file" />
            </intent-filter>

        </activity>
    </application>
</manifest>

public class MyActionSendReceiver extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        boolean canWrite = SettingsImpl.init(this);

        Intent mySendIntent = getIntent();

        // TODO inform my running background service

        // no gui has been created. finish this activity
        this.finish();
    }
}