我正试图在我的应用程序内打开Gallery内置应用程序中的图像/图片.
我有一张图片的URI(图片位于SD卡上).
你有什么建议吗?
我需要在我的Android应用程序中创建一个功能,允许用户打开手机图库,一次选择多张图片,然后将选定的图片保存在我的本地数据库中.我需要的是使用Android Intent获取所选图片(文件名和路径)的方法.希望你能理解我的问题.
我正在使用此代码:
if TPlatformServices.Current.SupportsPlatformService(IFMXTakenImageService,
IInterface(ImageService)) then
begin
Params.RequiredResolution := TSize.Create(640, 640);
Params.OnDidFinishTaking := DoDidFinish;
ImageService.TakeImageFromLibrary(SpeedButton2, Params);
end;
procedure TfGallery.DoDidFinish(Image: TBitmap);
begin
Image1.Bitmap.Assign(Image);
end;
Run Code Online (Sandbox Code Playgroud)
不幸的是,此代码可以从图库中返回一次图像.
编辑 - 根据Nick Cardoso的答案,以下代码适用于问题的第一部分:
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_PICK);
intent.setType(StringToJString('image/*'));
intent.setAction(TjIntent.JavaClass.ACTION_GET_CONTENT);
Intent.putExtra(TJIntent.JavaClass.EXTRA_ALLOW_MULTIPLE,true);
LaunchActivity(Intent);
Run Code Online (Sandbox Code Playgroud)
上面的代码用于选择多张图片.现在我很难找到一个解决方案来回复(在回调函数中)Delphi中的选定文件!
我正在尝试按下我的应用程序中的按钮打开内置的图库应用程序.
我正在试用Android 2.3及以上的手机.我拥有的手机/平板电脑
三星S(Android 2.3.5)LG手机(Android 2.3.3)Nexus One(Android 2.3.6)Android平板电脑(Android 4.0.3)Galaxy Nexus(Android 4.3)
我尝试了以下方法:
Intent intent = new Intent(Intent.ACTION_VIEW, null);
intent.setType("image/*");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
上面的代码在Android平板电脑(4.0.3)和我的Nexus手机上工作得很好..但如果在任何低于3.0的手机上运行相同的应用程序(给我错误)
08-24 11:47:53.628: E/AndroidRuntime(787): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
08-24 11:47:53.628: E/AndroidRuntime(787): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
08-24 11:47:53.628: E/AndroidRuntime(787): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-24 11:47:53.628: E/AndroidRuntime(787): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
08-24 11:47:53.628: E/AndroidRuntime(787): at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 11:47:53.628: E/AndroidRuntime(787): at android.os.Looper.loop(Looper.java:130)
08-24 11:47:53.628: E/AndroidRuntime(787): at android.app.ActivityThread.main(ActivityThread.java:3687)
08-24 11:47:53.628: E/AndroidRuntime(787): at java.lang.reflect.Method.invokeNative(Native Method)
08-24 11:47:53.628: E/AndroidRuntime(787): at java.lang.reflect.Method.invoke(Method.java:507)
08-24 11:47:53.628: E/AndroidRuntime(787): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
08-24 11:47:53.628: E/AndroidRuntime(787): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
08-24 11:47:53.628: E/AndroidRuntime(787): …Run Code Online (Sandbox Code Playgroud)