【问题标题】:Transfer file (.txt) between apps在应用程序之间传输文件 (.txt)
【发布时间】:2019-02-15 12:40:31
【问题描述】:

一个应用程序在通过它共享时导出一个文本 (.txt) 文件,我可以看到 Gmail、Dropbox、驱动器、共享它等应用程序通过该应用程序共享它。我想在我的应用程序中导入该文本文件以进一步修改它。 txt 文件。 我应该在清单或主要活动中实施什么? 我应该使用 INTENT 过滤器还是应该使用 getUriForFile() 方法来接收文本文件? 我的应用程序将如何出现在导出文本文件的其他应用程序共享列表中?

【问题讨论】:

    标签: android android-intent share data-import


    【解决方案1】:

    我认为您必须将您的应用程序与文件扩展名相关联,为此:

    <data android:scheme="file" /> //Means local file
    <data android:mimeType="*/*"/> //This accept any mimeType
    <data android:pathPattern=".*\\.txt" /> //Your excepted extention
    

    然后打开您的Manifest 并添加此行(您必须为您的目标活动添加一个意图过滤器):

    <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="file" />
            <data android:mimeType="*/*" />
            <data android:pathPattern=".*\\.txt" />
        </intent-filter>
    

    希望对你有帮助。

    【讨论】:

    • 对于路径模式,必须指定主机
    • 不,您只需将此 intentFilter 放入您必须与 textFiles 签约的活动中。
    【解决方案2】:

    您可以使用以下intent-filter 将任何文件从另一个应用程序导入到您的清单中

                <intent-filter>
                <action android:name="android.intent.action.SEND"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:mimeType="*/*"/>
                <data android:mimeType="text/plain"/>
    

    然后在您的活动中使用以下代码来获取文本文件的 URI

        private Uri getUriForFile() {
        Intent intent = getIntent();
        String action = intent.getAction();
        String type = intent.getType();
        if (TextUtils.equals(Intent.ACTION_SEND, action) && !TextUtils.isEmpty(type)) {
    
            Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
            if (uri != null) {
                Log.e("uri",uri.toString());
                return  uri;
            }
        }
        return null;
    }
    

    更新

    如果活动是您的启动器活动,则使用以下意图过滤器

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:mimeType="*/*"/>
                <data android:mimeType="text/plain"/>
            </intent-filter>
        </activity>
    

    【讨论】:

    • 先生,我正在从 whatsapp 导出聊天,但在实现此之后,我的应用程序在导出选项中仍然不可见。但我的文件资源管理器是(说复制到)。当我复制它时,我意识到它存储在一个 .txt 文件中。但我的应用程序在 whatsapp 上不可见。
    • 我收到消息(通过蓝牙、shareit、gmail 发送聊天,甚至复制到资源管理器)但我的应用程序不可见
    • 我编辑了我的答案。它对我有用。请添加您的清单文件。那么只有我能明白更多。另外请告诉我您使用的是哪种设备
    • 为我工作
    猜你喜欢
    • 2018-11-15
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2017-03-18
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多