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();
}
}
是否可以在 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();
}
}