gpt4 book ai didi

Android onNewIntent Uri 始终为空

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:36 25 4
gpt4 key购买 nike

在我的 Activity 的 onNewIntent() 方法中,getIntent().getData(); 始终为 null。它肯定会在转到 onCreate() 或任何其他生命周期函数之前转到此方法。它从浏览器返回这里,我不知道为什么 getIntent().getData() 是空的。

这个 Activity 像这样启动浏览器 context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(requestToken.getAuthenticationURL())));

返回这里

@Override
public void onNewIntent(Intent intent){
super.onNewIntent(intent);

Uri uri = getIntent().getData();
if (uri != null && uri.toString().startsWith(TwitterConstants.CALLBACK_URL)) {...}
}

但 uri 始终为 null。

list 内容:

  <activity
android:name="myapp.mypackage.TweetFormActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="oauth" android:host="myapp"/>
</intent-filter>
</activity>

static final String CALLBACK_URL = "oauth://myapp";

我在这里错过了什么?谢谢

最佳答案

在获取 URI 之前,您应该为 intent 参数调用 getData() 或执行 setIntent(intent)onNewIntent() 不会自动设置新的 Intent 。

更新:因此,您可以通过以下两种方式实现 onNewIntent()。第一个用新 Intent 替换旧 Intent ,因此当您稍后调用 getIntent() 时,您将收到新 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...
}

第二种方法是使用新 Intent 中的数据,让旧 Intent 保持原样。

@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...
}

当然,您可以使用两种变体的组合,但是不要期望从 getIntent() 接收新的 Intent ,直到您使用 setIntent() 显式设置它

关于Android onNewIntent Uri 始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11005657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com