4
我正在制作一个能够上传单个或多个文件或文件夹的应用程序。意图过滤器的定义如下:Android接收共享文本文件但不共享文本内容
<activity android:name=".UploadActivity" android:launchMode="singleTop" android:theme="@style/Theme.Sherlock">
<intent-filter android:label="@string/upload_intent">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/*" />
<data android:mimeType="audio/*" />
<data android:mimeType="image/*" />
<data android:mimeType="media/*" />
<data android:mimeType="multipart/*" />
<data android:mimeType="text/*" />
<data android:mimeType="video/*" />
</intent-filter>
<intent-filter android:label="@string/upload_intent">
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
这对于Blackmoon文件资源管理器和Android 4.0.3图库非常有用。我的应用程序显示在共享菜单中。但是,它也会在浏览器中显示,当您长按URL并选择共享页面。
当我发送一个文本文件到我的应用程序,我得到这个:
getIntent().getAction() returns Intent.ACTION_SEND
getIntent().getType() returns "text/plain"
getIntent().getScheme() returns null
getIntent().getExtras().getString(Intent.EXTRA_STREAM) returns the filename
然而,从浏览器发送URL返回同样的事情减去的Intent.EXTRA_STREAM。我可以在代码中轻松检测到这一点,并说“嗨,我无法上传文本!”但我宁愿改变意图过滤器,以便它只在有EXTRA_STREAM时触发。是否有可能这样做?
(我尝试使用安卓方案,但将不是一个文件和文本字符串区分被共享,因为它们都是空...)
我也希望只用EXTRA_STREAM来触发。你解决了这个问题吗? – 2016-07-21 07:57:58
即时消息也感兴趣。你是如何解决这个问题的? – user1506104 2016-11-04 20:28:04