2013-08-22 17 views
2

我正在尝试创建一种文件管理器,以允许用户将文件(从文件管理器)上传到Internet。什么样的意图用于选择应用程序,以及如何听它?

我想了解这个应用程序将如何触发。

例如: 当使用Gmail并按下添加附件按钮时,Android向我显示两个应用程序(Gallery和FileExpert)从中选择内容。

  • 这是如何完成的?
  • 什么样的意图是brodacasted(如果意图被使用)?
  • 通过按下添加附件按钮,Gallery和FileManager可以调用 的对象是什么类型?
+0

你可以简单地调用上下文菜单中点击连接按钮后... – Piyush

+0

@Piyush古普塔谢谢你,但我想有一个行为作为一个描述,当用户点击Gmail上的添加附件时,我的应用程序被调用。 –

+0

是的......我明白了......就像在某些情况下,当我们在设备上运行应用程序,并且如果进程正在同一项目中使用,那么在点击应用程序中的任何按钮后,它将打开带有两个应用程序名称的上下文菜单...不是吗??? – Piyush

回答

2

你是正确的,这是使用意图实现。特别是,调用应用程序(例如Gmail)会发送一个上传一个或多个文件的意图。选择一个文件的意图是Intent.ACTION_GET_CONTENT

要将您的应用程序添加到处理此意图的应用程序列表中,您需要在清单中指定它。据this documentation,它会是这个样子:

<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> 
+0

谢谢,我认为这是正确的方向! –

0

看到下面的代码片段

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..."));   
+0

@PSoftware Sainath谢谢你,但我想有一个描述的行为,当用户点击Gmail上的添加附件时,我的应用程序被调用 –

+0

ok你想显示FIle Explorer类的东西。 。? –

+0

我们可以这么说... –

相关问题