BroadcastReceiver通过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不像你的代码中的<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> 

你可以在这里阅读更多

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

  <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(); } }