我正在尝试创建一种文件管理器以允许用户将文件(从文件管理器)上传到互联网。
我想了解如何触发此应用程序。
例如:当使用 Gmail 并按下添加附件按钮时,Android 会显示两个应用程序(Gallery 和 FileExpert)来从中选择内容。
- 这是如何实现的?
- 广播什么样的意图(如果使用意图)?
- 按添加附件按钮可以调用的 Gallery 和 FileManager 是什么样的对象?
我正在尝试创建一种文件管理器以允许用户将文件(从文件管理器)上传到互联网。
我想了解如何触发此应用程序。
例如:当使用 Gmail 并按下添加附件按钮时,Android 会显示两个应用程序(Gallery 和 FileExpert)来从中选择内容。
你是对的,这是使用 Intents 实现的。特别是,调用应用程序(在您的示例中为 Gmail)发送上传一个或多个文件的意图。对于选择文件,intent 是Intent.ACTION_GET_CONTENT。
要将您的应用程序添加到处理此意图的应用程序列表中,您需要在清单中指定它。根据这个文档,它看起来像这样:
<activity android:name=".ui.MyActivity" >
<intent-filter>
<action android:name="android.intent.action.ACTION_GET_CONTENT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
请参阅以下代码段
ArrayList<Uri> uris = new ArrayList<Uri>();
File fileToEmail=new File("FIle Path");
Uri updf = Uri.fromFile(fileToEmail);//adding pdf uri
uris.add(updf);
final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("image/*");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, caseObj.getCaseTitle());
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("mailto:"));
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
activity.startActivity(Intent.createChooser(emailIntent,"Send mail..."));