【问题标题】:How to make a android app that can be used as a default program for opening certain kind of link? [duplicate]如何制作一个可以用作打开某种链接的默认程序的android应用程序? [复制]
【发布时间】:2015-07-22 20:30:30
【问题描述】:

我想制作一个 android 应用程序,它可以用作打开某种链接的默认应用程序(例如,如果我点击 http://facebook.com,它会显示建议的应用程序来打开该链接、浏览器或 Facebook 的应用程序)

【问题讨论】:

    标签: android


    【解决方案1】:

    这些被称为Implicit Intents

    假设您想在网络链接上打开您的应用,点击链接"myApp://someapp"

    然后在您的应用清单中

    <activity android:name="MyActivity">
        <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="myApp" android:host="path" />
        </intent-filter>
    </activity>
    

    当你点击上面的链接时,它会提示你打开你的应用程序。

    【讨论】:

      【解决方案2】:

      如果您想开发允许其他应用程序使用您的应用程序完成操作的应用程序,例如在您想要处理任何 url 用户点击的情况下,您的应用程序将被列出以完成操作。您必须创建将处理深度链接的活动。为此,您需要在您的 android 清单中为您的句柄活动添加一些属性。见下例

      以下 XML sn-p 显示了如何在清单中指定意图过滤器以进行深度链接。以“http”开头的 URI

      <activity
          android:name="com.example.android.BrowseActivity"
          >
          <intent-filter>
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.DEFAULT" />
              <category android:name="android.intent.category.BROWSABLE" />
              <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
              <data android:scheme="http"
                    android:host="www.example.com"
                    android:pathPrefix="/gizmos" />
              <!-- note that the leading "/" is required for pathPrefix-->
              <!-- Accepts URIs that begin with custom url "example://gizmos” -->
              <data android:scheme="com.example.android"
                    android:host="gizmos" />
          </intent-filter>
      </activity>
      

      一旦您将带有活动内容 URI 的 Intent 过滤器添加到您的应用清单中,Android 就可以在运行时将任何具有匹配 URI 的 Intent 路由到您的应用。

      一旦系统通过 Intent 过滤器启动您的 Activity(BrowseActivity),您就可以使用 Intent 提供的数据来确定您需要渲染的内容。调用 getData() 和 getAction() 方法来检索与传入 Intent 关联的数据和操作。您可以在 Activity 的生命周期中随时调用这些方法,但通常应该在早期回调(例如 onCreate() 或 onStart() )期间这样做。

      这是一个 sn-p,它显示了如何从 BrowseActivity 中的 Intent 中检索数据:

      @Override 
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
      
          Intent intent = getIntent();
          String action = intent.getAction();
          Uri data = intent.getData();
      } 
      

      如果您在这一点上需要更多帮助,请告诉我。

      【讨论】:

      • 我已经更新了代码,现在它将同时处理自定义和 http URL
      • 完成让我知道。
      • 酷我想要谢谢。
      • 首先,我要感谢所有回答我问题的人,非常感谢
      • @BhavdipPathar 所以如果我打开example.com/gizmos/123456 并且我想在小玩意的斜线之后获取代码(在这种情况下是 123456)我怎么能得到它?我可以从 intent.getData() 得到它吗?
      猜你喜欢
      • 2018-10-13
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多