getIntent.getData()返回null

时间:2016-01-11 07:48:12

标签: android android-intent

我是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?我的意思是在onNewIntentonResume,我称之为getIntent().getData(),但它们会显示不同的结果。

解决此问题的可行解决方案是什么?提前谢谢。

0 个答案:

没有答案