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(); } }
- 当在kotlin表达不按预期工作
- Gradle构建扫描错误:事件接收器已关闭
- Android AIDL:从Java更改代码到kotlin后,Porject崩溃
- 为一个开源项目创建dummy Fabric Api键
- Android室 – 简单的选择查询 – 无法访问主线程上的数据库
- Google的Duo应用程序支持哪些Android或Android应用程序?
- Dagger2 – FragmentSubcomponentBuilder没有实现AndroidInjector.Factory
- 在创建gradle插件时,把生成的java或kotlin源放到哪里?
- Android Kotlin子onClick阻止父OnTouch