我查看了相关的SO,但他们似乎并未解决此问题。
该应用程序支持应用程序链接,并且网站具有.well-known / assetlinks.json。
点击电子邮件中的应用链接时,说https://staging.xyz.com/v3/info/7vwD2yjW,
从冷启动具有有效应用程序链接的应用程序开始,intent.data始终为null。但是,如果应用程序已在运行或在后台运行,则URI intent.data在onNewIntent()中不为null,并且可以正常工作。
不确定我缺少什么。它在运行Android 7.0的Galaxy J3 Prime上运行。这是配置。有什么想法如何从冷启动获取intent.data URI?
<activity
android:name=".activity.MainActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait">
<tools:validation testUrl="https://staging.xyz.com/v3/info/7vwD2yjW" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="xyz.com"
android:pathPattern="/.*/share" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="xyz.com"
android:pathPattern="/.*/info/.*" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="*.xyz.com"
android:pathPattern="/.*/share" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="*.xyz.com"
android:pathPattern="/.*/info/.*" />
</intent-filter>
答案 0 :(得分:0)
尝试将android:launchMode="singleInstance"
更改为android:launchMode="singleTask"
答案 1 :(得分:0)
原来是这样工作的。在其他地方有一个例外,导致启动活动跳过了从URI数据的更新。发布解决方案,以防其他人使用。
要追踪,我是在Android Studio中通过应用链接冷启动期间将调试器附加到设备进程的,如下所示:
adb shell am set-debug-app -w --persistent com.xyz.appname
adb shell am start -a android.intent.action.VIEW -d "https://staging.xyz.com/v3/info/7vwD2yjW" com.xyz.appname
然后运行->调试->选择带有链接的调试配置
进行一个API调用,并在启动活动中显示带有繁忙指示器的PopupWindow。弹出窗口抛出异常:
BadTokenException: Unable to add window -- token null is not valid; is your activity running?
要使弹出窗口正常工作,请在活动启动周期完成后在onCreate()中显示弹出窗口
activityRootView.post {
handleAppLinkIntent(intent) // show busy popup and do stuff with intent.data
}
答案 2 :(得分:0)
查看此question。您应该重写onNewIntent,然后从中处理数据。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// do stuff with intent
}