如何从android中的intent-filter获取标签?

时间:2017-11-08 17:14:52

标签: android android-intent android-manifest android-sharing

我正在制作自定义共享对话框。所以,我想列出可以进行SEND操作的设备中的所有应用程序。示例代码:

{% if company_list %}
    <h1>Please select your company</h1>
    <ul>
      {% for company in company_list %}
      <li>{{company.name}}</li>
    </ul>
    {% endfor %}
    <button type="button" class="btn btn-info" href="{% url 'nodisoapp:createcompany' %}">Create New Company</button>
      <a href="{% url 'nodisoapp:createcompany' %}">create</a>

      {% else %}
      <h1>You have no companies</h1>
      <a href="{% url 'nodisoapp:createcompany' %}">create</a>
      <button type="button" class="btn btn-info" href="{% url 'nodisoapp:createcompany' %}">Create A Company</button>
      {% endif %}

我可以轻松地从ResolveInfo的activity标签中获取标签,但是我无法找到以编程方式从intent-filter获取标签的方法。那么,让我们知道有没有办法从manifest-filter中获取标签的各个活动的标签?

2 个答案:

答案 0 :(得分:0)

你错了。 ResolveInfo为您提供<intent-filter>图标和标签。 ActivityInfo来自<activity>代码。

答案 1 :(得分:0)

这是一个快速的代码示例,它是完成此操作的,我在阅读您的问题和@j__m的答案以及其他一些资源后编写了该代码:

        Intent i2 = new Intent(Intent.ACTION_PROCESS_TEXT);
        i2.setType("text/plain");
        PackageManager manager = getPackageManager();
        List<ResolveInfo> infos = manager.queryIntentActivities(i2,
                 PackageManager.MATCH_DEFAULT_ONLY);
        for (ResolveInfo info : infos) {
            try {
                Log.d("TEST", "Package name: ", info.activityInfo.applicationInfo.packageName);
                Resources res = manager.getResourcesForApplication(info.activityInfo.applicationInfo);
                int labelRes = info.labelRes;
                if (labelRes == 0)
                    labelRes = info.activityInfo.labelRes;
                Log.d("TEST", " - Title: ", res.getString(labelRes));
            } catch (PackageManager.NameNotFoundException ignore) {}
        }