【问题标题】:How to make activity appear in "Choose file" dialog?如何使活动出现在“选择文件”对话框中?
【发布时间】:2013-02-03 11:59:11
【问题描述】:

示例:当您单击按钮上传图像时,您会看到选择文件的对话框。然后你可以选择一个你想要选择它的应用程序。如何让我的应用出现在该对话框中?

【问题讨论】:

  • 你能添加你的代码来创建这个选择文件对话框吗?
  • @Shoshi 我没有创建它。我刚刚点击了网页中的上传按钮。
  • 您需要在清单中为您的活动声明适当的IntentFilters,请阅读:Android file chooser

标签: android android-intent filechooser


【解决方案1】:

simple and complete example code (less than 50 lines) 用于在打开 TXT 文件时 android 将与兼容应用程序(北极星、浏览器等)的菜单列表一起呈现给用户的应用程序。

免责声明:如果用户之前没有确定默认应用程序

注意:TXT 可能会因其他扩展而更改,请始终注意 mime 类型。

【讨论】:

    【解决方案2】:

    您需要在要处理上传的 Activity 中的清单文件中添加 Intent 过滤器。例如: 我有一个处理图像导入的 Activity,这是我写的。

    activity android:name="com.ImportTheme">
    
        <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:host="*" android:scheme="file" android:mimeType="image/*" />              
        </intent-filter>
    
    </activity>
    

    如您所见,您需要添加适合您查找内容的 mime 类型,在我的示例中,我只想要图片 - png、jpg 等。

    检查下一个link,你有一个mime类型列表。

    【讨论】:

      【解决方案3】:

      将以下意图过滤器添加到您希望进行拣选的 Activity:

              <intent-filter >
                  <action android:name="android.intent.action.PICK" />
      
                  <category android:name="android.intent.category.DEFAULT" />
      
                  <data android:scheme="file" />
              </intent-filter>
              <intent-filter >
                  <action android:name="android.intent.action.GET_CONTENT" />
      
                  <category android:name="android.intent.category.OPENABLE" />
                  <category android:name="android.intent.category.DEFAULT" />
      
                  <data android:mimeType="*/*" />
              </intent-filter>
      

      第一个处理 Action Pick,第二个处理 Get Content。

      您可能想要更改您的 mimeType 以稍微限制选择。我提供的那个会将您的应用放入每种文件类型的选择器中。

      【讨论】:

      • 我认为他应该对 mimeType 有所限制。在我的应用中,当我输入 / 时,它开始到处出现。
      • @DigCamara 当前的 mime 类型基本上是说“我的应用程序可以帮助您选择 PDF、图像、视频、文本文件或基本上存在的任何东西。”如果他只支持一种文件类型,他可以将其更改为他想要的任何特定类型的文件。
      • ——我们基本上是一致的。我只是认为需要明确地写出来,这样他就不会落入那个陷阱。
      • @DigCamara 是的。我完全同意你的看法:)我已经编辑了我的答案,包括一个注释。感谢您指出!
      • 你好,请问我应该在返回方法中输入什么名称?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2017-11-30
      • 1970-01-01
      • 2019-03-26
      相关资源
      最近更新 更多