ACTION_SEND 处理文件的 BroadcastReceiver?

BroadcastReceiver for handling file by ACTION_SEND?

是否可以在 Android 中创建 BroadcastReceiver 来处理从其他应用共享的文件?

我在清单中写道:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<receiver android:name=".modules.file.FileReceiver" >

        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />

            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />

            <data android:mimeType="application/pdf" />
        </intent-filter>
    </receiver>

和我的 FileReceiver 文件 (kotlin):

class FileReceiver : WakefulBroadcastReceiver() {

override fun onReceive(context: Context?, intent: Intent?) {
    context?.startService(Intent(context, FileHandlingIntentService::class.java))
}

}

但是我无法将文件从文件管理器发送到我的应用程序,因为我的应用程序不在可以处理文件的应用程序列表中... 真的可以仅在 Activity 中处理文件吗??? 有什么建议吗?

您几乎做对了,但是为了从其他应用接收文件,您需要创建 Activity不是 <receiver> 就像在你的代码中一样) 将处理这些文件。
也像这样更改语法:

<activity android:name=".MyActivity" >
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="pdf/*" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.SEND_MULTIPLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="pdf/*" />
    </intent-filter>
</activity>

你可以阅读更多here

这将有助于在您的应用中获取数据,在我的代码中我将从其他应用接收图像

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


 Intent intent1 = getIntent();
        String action = intent1.getAction();
        String type = intent1.getType();

        if (Intent.ACTION_SEND.equals(action) && type != null) {
            this.handleSend(intent1);
        }

    void handleSend(Intent intent) {
        try {
            Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
            imageShare.setImageURI(imageUri);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }