java - 使用隐式 Intent 过滤器时如何绕过 Complete Action Using 菜单?

标签 java android eclipse android-intent

在此示例中,我试图在访问 URL (test.com) 时自动启动我的应用

但是每次我这样做时,我都会被问到我应该使用哪个应用程序来这样做。我想要一种每次都启动我的应用程序而不提示用户交互的方法。

我已经研究了如何做到这一点,并发现了以下内容:

Android Eliminate Complete Action Using dialog

但是如果我实现一个显式 Intent 而不是一个隐式 Intent - 我如何指定在访问 test.com 时启动我的 Activity ,因为我不会使用

<data android:scheme="http" android:host="test.com" android:pathPrefix="/" />

隐含 Intent (成功运行 - 在访问 test.com 时启动应用程序,但提示用户选择应用程序 - 这是不希望的 - 需要在没有使用提示完成完整操作的情况下启动我的应用程序)

<activity android:name="com.nfc.linked.Warning">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"></action>
        <category android:name="android.intent.category.LAUNCHER"></category>
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
        <category android:name="android.intent.category.BROWSABLE"></category>
        <data android:scheme="http" android:host="test.com" android:pathPrefix="/" />
    </intent-filter>
</activity>

明确 Intent (尝试):

public class Warning extends Activity {

    Intent intent = new Intent(this, Warning.class);
    startActivity(intent); 

}

最佳答案

你不能。

您所说的显式 Intent 正好针对一个类。

您之前所做的是在您的 list 中创建一个 intent-filter,它沿着 http://*.test 的行监听与 URL 相关的 Intent。 com/*.但是,由于 HTTP 是一种非常常见的协议(protocol),而您的 URI 只是一个网站,因此其他应用程序(例如监听 http://* 等 URL 的浏览器)也将提供显示内容的功能。因此,Android 创建了一个选择器,用户必须从中选择您的应用。

解决此问题的唯一方法是在您的应用程序中使用一个按钮来打开 http://test.com 的选择器,要求用户按下它并选择您的应用程序作为默认处理程序对于这样的 URL。出于安全原因,它不能以编程方式完成,因为恶意应用程序可以将自己设置为各种操作的默认值。

另一种选择是提出您自己的 URI 方案,例如 Google Play 的 market://。由于您的应用程序将是唯一使用此功能的应用程序,因此它将是唯一可用于处理链接的应用程序。但是,您需要确保所有尝试通过其他地方(例如网页上的链接或来自其他应用程序的链接)打开您的应用程序的第三方都遵循您的 URL 方案。此外,如果用户点击其中一个第三方链接而您的应用未安装,则可能会导致用户设备上出现 ActivityNotFoundException

关于java - 使用隐式 Intent 过滤器时如何绕过 Complete Action Using 菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644664/

相关文章:

Java - 如何使用匹配器编写可选的正则表达式模式

java - 如何在Android上从初始屏幕到主屏幕设置动画?

java - 无法在 Android 应用程序中使用 Java 库

java - 如何使用动态生成的不同类型的列创建表格 View ?

android - 如何使用opencv在Android相机上制作矩形?

xml - Eclipse:保存时自动格式化 XML 文件

java - Eclipse 可以在项目中构建特定的包吗?

java - 包使用冲突: Import-Package with jasperreports

java - 将日期转换为不同的时区

android - 离线Android Gradle插件