在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中处理文件吗? 有什么建议吗?
答案 0 :(得分:0)
你几乎做对了,但为了接收来自其他应用的文件,您需要在代码中创建 Activity
( Not <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
答案 1 :(得分:0)
这有助于在您的应用中获取数据,在我的代码中,我将从其他应用中获取图片
actual={"Appl", "Orange", "Ornge", "Peace"}
predicted=["Red", "Apple", "Green", "Peace", "Orange"]
result = {}
for pre in predicted:
if pre in actual:
result.add(pre)
else:
for act in actual:
if (similar(pre, act) > 0.8):
result.add(pre)