Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android bug:Crop intent在某些设备上起作用_Android_Android Intent_Android File - Fatal编程技术网

Android bug:Crop intent在某些设备上起作用

Android bug:Crop intent在某些设备上起作用,android,android-intent,android-file,Android,Android Intent,Android File,Android bug:Crop intent在一些文件管理器上工作 以下代码: 启动从文件夹/文件裁剪图像的意图 Intent intent = new Intent(Intent.ACTION_GET_CONTENT,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); //intent.putExtra(MediaStore.EXTRA_OUTPUT, MediaStore.Images.Media

Android bug:Crop intent在一些文件管理器上工作

以下代码:

启动从文件夹/文件裁剪图像的意图

Intent intent = new Intent(Intent.ACTION_GET_CONTENT,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

        //intent.putExtra(MediaStore.EXTRA_OUTPUT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());
        intent.putExtra("crop", "true");
        intent.putExtra("return-data", true);

        startActivityForResult(intent, 0);
两个版本的代码在不同的设备上崩溃,相同的Android版本

第一次验证:

try 
    {
        bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), targetUri);

        }catch (FileNotFoundException e){e.printStackTrace();} 
        catch (IOException e){e.printStackTrace();}
第二版(适用于其他设备)


我该怎么办?

com.android.camera.action.CROP是内部API的一部分,因此不能保证所有android设备都支持它

如果您希望所有设备都支持您自己的裁剪活动,则必须实施该活动。如果某些设备不支持
意图
,至少应该实现某种回退行为请不要忘记这样做:)


顺便说一句,如果我没记错的话,三星Galaxy实现了自己的媒体/画廊应用程序,因此它没有意识到其意图。

看看公认的答案。显然,并非每个设备上都有裁剪意图功能,因此可能会对其进行定制,使其表现不同。在这种情况下,您需要求助于实现您自己的解决方案。您永远不应该盲目地使用内部API。。。在使用它们之前,请务必检查它们是否存在,并知道并非所有设备都支持它。谢谢提醒。某些设备不支持意图?这不是有点疯狂吗?不是他们不“支持”这个意图。。。这更像是他们“重新定义了它”。Android是开源的,这意味着三星和HTC等公司可以获取源代码并定制用户界面、删除某些应用程序、制作自己的应用程序等。这就是为什么谷歌内部源代码中的任何内容都不是你可以依赖的。。。因为它不能保证所有设备都保持不变。另一方面,公共SDK保证在任何情况下都能正常工作。公共SDK是内部API之上的抽象,这意味着您可以始终相信它可以工作。这也是为什么一些设备需要很长时间才能升级到较新版本的Android(即大多数设备尚未升级到ICS)。。。因为像Verison和Samsung这样的公司需要额外花费6-12个月的时间来修改操作系统以满足他们的需求。这有点烦人。那么,我应该制作自己的作物课程吗?(知道我可以简单地将URI输入到哪些示例中吗?)我不知道有任何第三方库可以这样做(尽管我承认,我只是在谷歌上快速搜索了“android裁剪第三方应用程序”,然后很快就放弃了)。也许你可以在网上找到支持它的东西。最坏的情况是,如果你的应用程序不支持内部API,你就要实施回退行为。。。这样,至少一些设备可以裁剪。这显然不是你想要的,但再一次。。。如果你找不到任何东西,这是最糟糕的情况。
bitmap = (Bitmap) data.getExtras().get("data");