- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个网址。例如:
http://host.com/abc/12345
http://host.com/abc/def/12345
12345
- 是一些 id。
我想为这些 url 打开不同的 Activity 。
目前我在 AndroidManifest.xml 中有下一个实现:
<activity
android:name=".ui.activities.Activity1"
android:windowSoftInputMode="adjustResize">
<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="http" android:host="host.com" android:pathPrefix="/abc"/>
</intent-filter>
</activity>
<activity
android:name=".ui.activities.Activity2"
android:windowSoftInputMode="adjustResize">
<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="http" android:host="host.com" android:pathPrefix="/abc/def"/>
</intent-filter>
</activity>
第一个 url 效果很好:当我点击它时,android 建议我使用一些其他应用 或我的 Activity1。
但是当我点击第二个 url 时出现问题:android 建议我使用一些其他应用 或我的Activity1 或我的Activity2。
所以我的问题是:有没有办法从建议列表中排除 Activity1。
我尝试使用 pathPattern
并尝试使用谷歌搜索如何从 IntentFilter 中排除 url,但我失败了。
最佳答案
由于我没有通过`AndroidManifest.xml'找到优雅的解决方案,我决定通过代码实现部分“选择”逻辑。所以这就是我所拥有的:
在 list 文件中,我们定义了 UrlActivity
,它将响应任何 url,如“http://host.com/abc/ ...”,因此它看起来像:
<activity
android:name=".ui.activities.UrlActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize">
<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="http" android:host="host.com" android:pathPrefix="/abc"/>
</intent-filter>
</activity>
然后我们定义专门为UrlActivity
调优的接口(interface)Component
(您可以根据行为选择任何名称)。在简单的情况下,它可以从 Activity 中复制类似的方法。例如:
public interface Component {
void onStart();
void onStop();
}
然后在您的 UrlActivity
中检索 uri 并选择适当的组件实现。例如:
private Component component;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri uri = getIntent().getData();
List<String> segments = uri.getPathSegments();
if (segments.contains("def")) {
component = new Component2(...);
} else {
component = new Component1(...);
}
}
@Override
protected void onStart() {
super.onStart();
component.onStart();
}
@Override
protected void onStop() {
super.onStop();
component.onStop();
}
与@KamranAhmed 解决方案相比,此解决方案具有优势:可扩展性、减少重复。但它也有一个缺陷:您需要编写更多代码并为该解决方案考虑合适的架构。所以它确实比@KamranAhmed 方法更难,但对我来说它更干燥和灵活。
关于android - 在pathPrefixes/abc 和/abc/def 上开启不同的Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40278501/
Gatsby 文档 path prefix表明我可以定义类似 pathPrefix: "/blog" 的内容,事实上我尝试了它并且它成功了。但是,我不想对应用程序所在的路径进行硬编码。我希望能够将构建
我在 list 文件中为我的 Android 应用程序定义了一个深层链接:
鉴于以下 ( complete example at Go playground ): // Collection root := r.PathPrefix("/widgets/").Subroute
使用 trafix w/docker 后端,我想匹配 /manage/users/api... 形式的所有 URL 并将它们映射到 /api...。我尝试过: traefik.frontend.rul
我在我的 Golang 项目目录的根目录 files 中有一个名为 test.jpg 的文件。所以这将是 ./files/test.jpg 我想为我的前端提供服务,但我遇到了困难。 我的 golang
我正在尝试让 Android 深层链接仅适用于特定的 url,例如: https://books.com/book/nice-title-of-a-book https://books.com/boo
我有一个使用 --prefix-paths 构建的 GatsbyJS 静态站点。 pathPrefix 在 gatsby-config.js 中设置为 /environment/test。它被部署到运
使用 docker 容器中的 Traefix 1.2.3 版,我设置了以下文件。 traefik: image: traefik command: --web --docker --docke
所以我希望在 Intent (浏览器)调用链接时捕捉到我的 Activity : http://host/info?username=samplename 而不是什么时候: http://host/i
我正在制作一个 React 前端应用程序,我的目标是使用 Docker 镜像提供最终版本 (npm run build),其中包含一个多阶段构建以及我的源代码代码和 Nginx。涉及多个其他 Dock
我有一个 swarm 服务容器,暴露了 5500 端口。在容器中,https://localhost:5500/app 上有一个 Web UI . 我的服务称为 service1。 我正在使用 tra
我正在使用 Go 的 gorilla.mux 库。我有以下配置,但我无法找出到达 HelloWorldXml 方法的 URL。 func main() { router := mux.NewR
我正在尝试设置一个 Intent 过滤器以在用户点击以下 URI 时启动我的 Activity :example.com/pathA/pathB/#pathC/someGUID 所以我在 list 文
我正在尝试设置一个 Intent 过滤器以在用户点击以下 URI 时启动我的 Activity :example.com/pathA/pathB/#pathC/someGUID 所以我在 list 文
我注意到有两种方法可以在 gorilla/mux router 中指定路径: r.PathPrefix("/api").Handler(APIHandler) 和: r.Handle("/api",
我是一名优秀的程序员,十分优秀!