问题标签 [android-intent-chooser]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何模仿选择器活动/共享菜单?
我试图制作自己的选择器活动来替换 androids 共享到...弹出窗口。
我看了一下ChooserActivity extends ResolverActivity并试图复制代码。在我的清单中,我有
在 onCreate 我做
这有效,但附加了文件的共享除外。在那里,我遇到了这个崩溃:
似乎我的活动无法执行原始意图,因为它无权访问这些文件。可以做些什么来解决这个问题?有没有办法获得许可?毕竟,android 也以某种方式做到了这一点。
我已经尝试了一些修复,但到目前为止没有任何效果。如果我不能让它工作,我想从 android 调用通常的共享菜单来处理这个,但我也不能让它工作。
不起作用,因为这些标志已经存在于意图中。另一方面,删除它们将导致共享工作,但文件不会被共享,它将是空的。
会抛出同样的异常。
我试图通过为原始意图制作一个选择器来以这种方式调用 android 共享菜单,但它只是给了我一个让我选择我的应用程序的窗口。
另一方面,这很有效,我能够选择 android 共享菜单,但是当我尝试共享时没有任何反应。该应用程序的行为就像它没有收到任何东西一样。
正是我想要的,打开正常的 android 共享菜单。但是仍然存在一个问题:无论份额是多少,它都无济于事。我选择了一些东西,就是这样,它关闭了。没有其他的。为什么会这样?我基本上开始了与旧应用程序相同的意图,并将其重定向到 android。为什么它不再起作用了?我能做些什么?
我读到可能需要root权限才能使其工作,但也许还有一种解决方法?或者至少是一种将原始意图反馈到 android 共享菜单而不破坏它的方法?
从某些应用程序共享时,它可以工作,例如图库应用程序。那些没有问题的应用程序都使用以 content://media/ 开头的 URI...
此外,根据我的研究,它似乎与 FileProvider 有关,但似乎必须在共享给我的应用程序中完成,而不是我的应用程序,所以我无能为力那。
另外,请注意,我不是在创建共享 Intent,而是接收并将其发送到另一个应用程序。
android - 自定义选择器活动:SecurityException UID n 没有对 content:// uri 的权限
我正在构建一个替换原生 Android 共享对话框的选择器应用程序。它工作正常,除非我尝试通过长按图像 > 共享图像从 Chrome 共享图像。
我发现 Google+ 没有捕捉到异常(它崩溃了),所以我可以通过 Logcat 查看它:
- 在 Google 上进行图片搜索。
- 选择一个图像(这应该显示预览)
- 长按图片
- 选择“分享图片”
- 我的选择器活动弹出
- 选择谷歌+
- Google+ 因以下错误而崩溃:
java.lang.SecurityException:UID 10130 没有对内容的权限://com.android.chrome.FileProvider/images/screenshot/15307295588677864462883877407218.jpg [用户 0]
我的代码(简化):
AndroidManifest.xml:
如果我查看Intent.ACTION_CHOOSER的文档,它会说:
如果需要通过选择器授予 URI 权限,除了里面的 EXTRA_INTENT 之外,还必须在 ACTION_CHOOSER Intent 上指定要授予的权限。这意味着使用 setClipData(ClipData) 来指定要授予的 URI 以及 FLAG_GRANT_READ_URI_PERMISSION 和/或 FLAG_GRANT_WRITE_URI_PERMISSION (视情况而定)。
我不完全确定这是否是我的应用程序必须做的事情,或者它是否是调用选择器活动的应用程序的责任 - 但我认为是后者。我的应用无法为其接收的意图设置 URI 权限,可以吗?
无论如何,如果我检查额外的和标志mIntent
,mPayloadIntent
我会得到:
mIntent 只有附加功能,没有标志(据我所知):
android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER IntentSender{4fa3901: android.os.BinderProxy@3aec3a6} (android.content.IntentSender)
android.intent.extra.INTENT Intent { act=android.intent.action.SEND typ=image/jpeg flg=0x80001 clip={image/jpeg U:content://com.android.chrome.FileProvider/images/screenshot/ 15307316967108618905323381238187.jpg}(有附加功能)}(android.content.Intent)
android.intent.extra.TITLE 通过 (java.lang.String) 共享
mPayloadIntent:
android.intent.extra.STREAM 内容://com.android.chrome.FileProvider/images/screenshot/1530731945132897653908815339041.jpg (android.net.Uri$HierarchicalUri)
- FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
- FLAG_ACTIVITY_NEW_DOCUMENT
- FLAG_GRANT_READ_URI_PERMISSION
mPayloadIntent
确实有,FLAG_GRANT_READ_URI_PERMISSION
但mIntent没有。根据文档,它应该。
我已经读到我的应用程序可能使用了 URI 权限,所以我尝试自己缓存文件,但是当我尝试通过 ContentResolver 访问 URI 时,我得到 - 你猜对了 - 权限错误。
然后我意识到我可能不应该缓存文件,因为 Android 的原生选择器活动似乎也没有这样做。这就是我现在所处的位置。回到原点。
这是 Chrome 错误吗?安卓漏洞?还是我做错了什么?
我很乐意责怪 Chrome 并提交错误报告,但从事类似项目(并遇到相同问题)的人告诉我 Whatsapp 也有类似问题。它也通过 content:// uri 共享图像。
为了完整起见,我正在使用 Android 8.1 的 Pixel 2016 上进行测试。我不知道其他人(遇到与 WA 相同的问题)正在使用什么。
android - 如何从指定的目录路径使用android目录选择器
我是 android 新手并正在学习它,我想要的是从指定路径中选择文件夹/目录,例如在我的情况下路径将是 sd-card/DMM/DT,我希望该目录选择器从该文件夹开始,而不是从通用位置.
我已经在使用此代码
对于结果方法,我正在使用这个
上面的代码工作正常,但不是我想要的方式,
我知道已经有很多用于目录和文件选择器的库,但我没有从它们那里得到我需要的。
我还尝试使用 Intent.setData 和 Intent.setDataAndType 之类的方法,但不知道如何从特定位置指向目录选择器。
任何帮助,将不胜感激
我也尝试了以下链接
https://github.com/passy/Android-DirectoryChooser/tree/master/sample
https://android-arsenal.com/details/1/160
还有更多,但无法获得任何帮助。
xamarin - Action.Picker returns invalid/wrong Uri (How to get path or byte[] from multiple picked gallery img)
I have an forms app where i need to pick "1 to many" images from the phone storage. For this i use the dependency injection system.
My problem is the somewhere i get an Android.netUri that resolves to a file that do not exist... and to a file name that i have never seen before. The kicker is that if i pick pictures that was takes within the last couple of hours this code works...
Im am at the end of my hoap, i really hope someone can point me to something that i'm doing wrong.
i start the Picker activity with:
then in my MainActivity.cs i have the OnActivityResult I have tried to use the ContentResolver.OpenInputStream to get the image bytes with no luck, so this is commented out atm.
And the GetActualPathFromFile (also in my MainActivity.cs) The hole func is below but i hit this part of the code and get at "FileNotFound"
The Hole GetActualPathFromFile
android - 在启动电子邮件的意图选择器时,如何摆脱建议的接收者?
为了启动电子邮件的意图选择器,我遵循了文档。https://developer.android.com/guide/components/intents-common#Email
我使用 ACTION_SENDTO 作为操作。
结果显示在屏幕截图中。除了可能打开它的应用程序之外,第一行还有一些建议的联系人(我猜是最常见的联系人)。如果点击它,那个地址和我第一次点击的地址都会被预先填写。
有没有办法摆脱它们并只显示应用程序?
android - 我需要一个意图来选择具有特定格式的视频
我需要从图库中挑选照片或视频。
但是需要限制视频格式例如仅用于mp4
和mov
/或其他特定的以后。
我可以通过向这种代码添加一些选项来实现它吗?
android - 选择具有相同操作的 Android 服务
我们创建了两个应用程序即服务。当我们从第三个应用程序隐式启动服务时,两者都可以正常运行。但是我们希望用户选择应该启动哪个服务。有什么方法可以创建 AppChooser 或类似的东西?
我们向这两个服务添加了一个活动,其中包含一个向用户显示应用程序的操作。有什么方法可以捕捉点击的应用程序,所以我们可以隐式启动服务?
android - Android 在任何地图应用程序中自动显示从我的位置到给定位置的路线
我想显示一个选择器对话框,用户将在他们的设备中选择任何地图应用程序。选择后,应用程序将自动查找设备位置并显示到给定位置的路线(如纬度和经度)。
对于谷歌地图,这段代码在不显示选择器对话框的情况下满足了我的需求,
但对于 Yandex,我只能在如下地图上显示给定位置,
有什么方法可以为所有地图应用程序或仅适用于 Google Maps 和 Yandex?
android - 从 Android 通知中打开下载的 ZIP 文件
我有一个 WebView 正在将 ZIP 文件下载到设备并向用户显示通知。我的模拟器有一个可以打开文件的文件应用程序,但用户应该能够点击通知并打开文件。理想情况下,文件应用程序会打开它,因为它可以处理 ZIP 文件,但如果没有任何东西可以打开它,我希望为用户提供指向 Play 商店的链接以下载可以下载的东西。
这是构建通知的代码:
我已经尝试了两个意图。这个什么都不做:
这个给我一条消息说“没有应用程序可以执行此操作:”