Android onNewIntent Uri is always null

前端 未结 1 1428
悲哀的现实
悲哀的现实 2021-01-14 07:52

In my activity\'s onNewIntent() method, getIntent().getData(); is always null. It definitely goes to this method before going to onCreate() or any

1条回答
  •  星月不相逢
    2021-01-14 08:55

    You should call getData() for the intent argument or perform setIntent(intent) before obtaining URI. onNewIntent() doesn't set new intent automatically.

    UPDATE: So, here're two ways that you can implement onNewIntent(). The first replaces the old intent with the new one, so when you call getIntent() later, you will receive the new intent.

    @Override
    protected void onNewIntent(final Intent intent) {
        super.onNewIntent(intent);
        // Here we're replacing the old intent with the new one.
        setIntent(intent);
        // Now we can call getIntent() and receive the new intent.
        final Uri uri = getIntent().getData();
        // Do something with the URI...
    }
    

    The second way is to use data from the new intent leave the old one as-is.

    @Override
    protected void onNewIntent(final Intent intent) {
        super.onNewIntent(intent);
        // We do not call setIntent() with the new intent,
        // so we have to retrieve URI from the intent argument.
        final Uri uri = intent.getData();
        // Do something with the URI...
    }
    

    Of course, you can use a combination of two variants, but do not expect to receive the new intent from getIntent() until you explicitly set it with setIntent().

    0 讨论(0)
提交回复
热议问题