1

私はインテントチューザーを作成したいGCMサービスを持っています(を使用Intent.createChooser())が、さまざまなことを試みてきたにもかかわらず、常に取得Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?しています

サービスのコードは次のとおりです (私が試したさまざまなことからのコメントがいくつかあります)。

public class GCMIntentService extends GCMBaseIntentService 
{
    // ...

    protected void onMessage(Context context, Intent intent)
    {
        Log.i(TAG, "Received message");
        String message = "Push received";
        displayMessage(context, message);
        fireIntent(context, message);
    }

    private void fireIntent(Context context, String url)
    {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, url);
        //intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(Intent.createChooser(intent, "Share URL"));
        //context.startActivity(Intent.createChooser(intent, "Share URL"));
        //sendBroadcast(intent);
    }
}

前もって感謝します。

4

1 に答える 1

1

実際、Activityを a から開始するのServiceは得策ではありません。なぜなら、Serviceはバックグラウンドで実行され、他のアプリケーションはフォアグラウンドで実行される可能性があるからです。他のアプリの実行中にセレクターをポップするIntentと、ユーザー エクスペリエンスが完全に損なわれます。クリック可能Notificationsを使用して、ユーザーが必要なActivityときに自分で開始できるようにすることをお勧めします。お役に立てれば。

于 2012-09-30T11:41:41.607 に答える