我是Android新手。
现在,我对一个问题非常沮丧。
我有一项活动,其launchMode
设置为singleInstance
。在此活动中,我有一个WebView
,我想根据我访问它的方式(即从另一个应用程序,在同一个应用程序中)加载URL。这样做,我依赖于我的意图及其数据。
以下是我的活动代码的摘录。
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
Log.d(TAG, "onNewIntent: " + intent.toString());
Uri uri = getIntent().getData();
if(uri != null) {
Log.d(TAG, "uri: " + uri.toString());
if (uri.toString().contains("ok")) {
Log.d(TAG, "uri contains ok");
}
}
}
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume intent: " + getIntent().toString());
if(getIntent()!=null) {
Uri uri = getIntent().getData();
if(uri != null && order == null) {
Log.d(TAG, "uri: " + uri.toString());
if (uri.toString().contains("ok")) {
web.loadUrl("my_order_success");
} else {
web.loadUrl("my_order_cancel");
finish();
}
} else {
Log.d(TAG, "no uri");
if(getIntent().hasExtra("orderInfo")) {
order = getIntent().getParcelableExtra("orderInfo");
Log.d(TAG, "order: " + order.toString());
}
web.loadUrl("my default loading page");
}
}
...
}
我在我的onResume
中感到很沮丧,日志会告诉我"没有uri"。据我所知,这意味着运行此活动的意图没有与意图一起传递数据字段。但是,从登录onNewIntent
,我收到消息" uri包含ok"根据我的理解,这意味着意图有数据。
这是我的日志:
01-11 16:25:30.081 8584-8584/com.bringit.bringitrecyclerviewtest D/KakaoPayActivity: onNewIntent: Intent { act=android.intent.action.VIEW dat=bringit_kakao://ok flg=0x10400000 cmp=com.bringit.bringitrecyclerviewtest/.KakaoPayActivity }
01-11 16:25:30.081 8584-8584/com.bringit.bringitrecyclerviewtest D/KakaoPayActivity: uri: bringit_kakao://ok
01-11 16:25:30.081 8584-8584/com.bringit.bringitrecyclerviewtest D/KakaoPayActivity: uri contains ok
01-11 16:25:30.171 8584-8584/com.bringit.bringitrecyclerviewtest D/KakaoPayActivity: onResume intent: Intent { act=android.intent.action.VIEW dat=bringit_kakao://ok flg=0x10400000 cmp=com.bringit.bringitrecyclerviewtest/.KakaoPayActivity }
01-11 16:25:30.171 8584-8584/com.bringit.bringitrecyclerviewtest D/KakaoPayActivity: no uri
这怎么可能?通过setIntent
设置为活动的意图是否未传到onResume
?我的意思是在onNewIntent
和onResume
,我称之为getIntent().getData()
,但它们会显示不同的结果。
解决此问题的可行解决方案是什么?提前谢谢。