我正在尝试创建一个简单的应用程序,可以从Gallery应用程序获取图像并将其显示在imageButton上.我在运行Android 5.0.1的手机上使用API 21进行测试.不幸的是,无论我尝试什么,我都会遇到安全错误 - 即使我指定了权限.
我获取图像的代码是:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent){
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode){
case PICK_IMAGE_REQUEST:
if(resultCode == RESULT_OK && imageReturnedIntent != null && imageReturnedIntent.getData() != null) {
Uri uri = imageReturnedIntent.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
// Log.d(TAG, String.valueOf(bitmap));
ImageButton ib = (ImageButton) findViewById(R.id.inputImg);
ib.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试从Dropbox中选择图像时代码有效,但是当我从图库中选择图像时,我得到了
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/35634 from pid=25240, uid=10070 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
Run Code Online (Sandbox Code Playgroud)
我为READ_EXTERNAL_STORAGE制作了一个使用权限标记: …
java android android-gallery android-permissions android-5.0-lollipop
我正在尝试从教程或相机中获取图像的教程和示例代码的数量,然后裁剪图像并将其上传到服务器.我在那个代码中实现了代码,我面临的问题很少.
下面是我的代码片段
public void getPhoto() {
final String[] items = new String[] { "Take from camera",
"Select from gallery" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.select_dialog_item, items);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Select Image");
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) { // pick from
// camera
if (item == 0) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(
"android.intent.extras.CAMERA_FACING",
android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT);
mImageCaptureUri = Uri.fromFile(new File(Environment
.getExternalStorageDirectory(), "tmp_avatar_"
+ String.valueOf(System.currentTimeMillis())
+ ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
mImageCaptureUri);
try { …Run Code Online (Sandbox Code Playgroud) android image-uploading android-gallery android-camera android-camera-intent
从图库和相机中选择裁剪图像在Android 7.0以下完成,但在Android Naught中它在相机中崩溃.我使用fileprovider但不起作用.
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mBtn;
private Context context;
private static final int SELECT_PICTURE_CAMARA = 101, SELECT_PICTURE = 201, CROP_IMAGE = 301;
private Uri outputFileUri;
String mCurrentPhotoPath;
private Uri selectedImageUri;
private File finalFile = null;
private ImageView imageView;
private PermissionUtil permissionUtil;
Uri fileUri;
File file = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtn = (Button) findViewById(R.id.btn_img);
imageView = (ImageView) findViewById(R.id.img_photo);
permissionUtil = new PermissionUtil();
mBtn.setOnClickListener(this);
context = this; …Run Code Online (Sandbox Code Playgroud) 我有一个包含WebView作为其子项的Gallery,当我滚动Gallery时,我收到以下警告,
'04-07 19:35:37.409: WARN/webcore(664): Can't get the viewWidth after the first layout
04-07 19:35:37.470: WARN/webcore(664): skip viewSizeChanged as w is 0'
Run Code Online (Sandbox Code Playgroud)
这个警告是指什么?[我没有硬编码任何布局参数.]
任何关于为什么发生此警告的指示都会非常有用......
这些也被打印出来了
04-15 11:10:13.202: DEBUG/webviewglue(617): nativeDestroy view: 0x257f40
04-15 11:10:13.243: DEBUG/webviewglue(617): nativeDestroy view: 0x25d680
04-15 11:10:13.292: DEBUG/webviewglue(617): nativeDestroy view: 0x240688
04-15 11:10:13.332: DEBUG/webviewglue(617): nativeDestroy view: 0x249918
04-15 11:10:13.373: DEBUG/webviewglue(617): nativeDestroy view: 0x226608
04-15 11:10:13.423: DEBUG/webviewglue(617): nativeDestroy view: 0x21e418
04-15 11:10:13.482: DEBUG/webviewglue(617): nativeDestroy view: 0x23a4e8
04-15 11:10:13.533: DEBUG/webviewglue(617): nativeDestroy view: 0x235c68
04-15 11:10:13.572: DEBUG/webviewglue(617): nativeDestroy view: 0x212a28
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我一直在寻找千篇文章,但我找不到如何解决我的问题.
我有一个ImageView.当用户单击此ImageView时,将显示DialogFragment,用户可以选择在相机上拍摄新照片,也可以从库中选择照片.直到这里一切正常.
问题是,用户选择的图片应该替换ImageView中的当前图片,但是这个位是不起作用的,因为执行此代码的onActivityResult()函数没有被执行,所以ImageView中的图像始终保持不变.我会感激任何帮助,因为我没有看到或理解,为什么这个代码没有被执行.
我在用户选择图像后立即在LogCat中收到警告:
05-07 12:17:11.542: I/ActivityManager(59): Displayed activity com.android.gallery/com.android.camera.ImageGallery: 935 ms (total 935 ms)
05-07 12:17:12.812: W/FragmentActivity(3614): Activity result no fragment exists for index: 0x10001
05-07 12:17:12.862: W/InputManagerService(59): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@45fd9c38 (uid=10016 pid=317)
Run Code Online (Sandbox Code Playgroud)
Activity.java:
private ImageView imageLoader = null;
imageLoader = (ImageView) findViewById(R.id.f_imageLoader);
imageLoader.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
ImageLoaderDialog imageLoaderDialog = new ImageLoaderDialog(imageLoader);
imageLoaderDialog.show(getSupportFragmentManager(), "imageLoaderDialog");
}
Run Code Online (Sandbox Code Playgroud)
Activity.xml:
<ImageView
android:id="@+id/f_imageLoader"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="0.20"
android:contentDescription="@string/imgDesc"
android:src="@drawable/my_image" />
Run Code Online (Sandbox Code Playgroud)
ImageLoaderDialog.java:
//Dialog for choosing between new camera image …Run Code Online (Sandbox Code Playgroud) android-gallery android-camera android-imageview android-dialogfragment
我正在构建Android应用程序" XYZ ",用户将在其中存储图像和视频等媒体.因此,我想在Android库中创建一个名为"XYZ"的文件夹,并将所有特定于该应用程序的媒体存储在"XYZ"中.我该如何实现?
目前,我能够将媒体存储在SD卡上并扫描媒体文件,它们显示在android图库的"images"文件夹中.
我需要通过Video实现修剪操作.我正在使用此代码,它在Gallery2软件包安装的手机上完美运行.但它没有返回onActivityResult(如果攻击成功,意图不会返回任何结果).
码:
Intent trimVideoIntent = new Intent("com.android.camera.action.TRIM");
// The key for the extra has been discovered from com.android.gallery3d.app.PhotoPage.KEY_MEDIA_ITEM_PATH
trimVideoIntent.putExtra("media-item-path", FilePath);
trimVideoIntent.setData(videoUri);
// Check if the device can handle the Intent
List<ResolveInfo> list = getPackageManager().queryIntentActivities(trimVideoIntent, 0);
if (null != list && list.size() > 0) {
startActivityForResult(trimVideoIntent,2); // Fires TrimVideo activity into being active
}else {
Toast.makeText(this, "Video trimming not supported", 1).show();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在修剪和返回结果后关闭gallery2?
我正在尝试使用exif界面在Android应用程序中编写User_Comment和TAG_GPS捕获的图像,但由于某种原因,当我在图库中查看图像的详细信息时,标签似乎没有附加到图像上.
似乎可能没有将标签写入捕获的图像,因为文件路径可能是错误的.我想这可能是因为我将标签写入了错误的图像路径.
有没有人知道我的标签写入图像的方式是否有问题?
这是在@ Charlie的更改后保存exif数据的代码:
private File getOutputPhotoFile() throws IOException {
File directory = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), getPackageName());
if (!directory.exists()) {
if (!directory.mkdirs()) {
Log.e(TAG, "Failed to create storage directory.");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
File[] files = directory.listFiles();
File exifVar = new File(directory.getPath(), "IMG_" + timeStamp + ".jpg");
if(files.length!=0) {
File newestFile = files[files.length-1];
exifVar = new File(directory.getPath() + File.separator + newestFile.getName());
}
String mString = "Generic Text..";
ExifInterface …Run Code Online (Sandbox Code Playgroud) 我正在构建一个从Web下载图像并将它们存储到我的SD卡中的应用程序,为了使它们在库中不可见,我将这一行生成一个.nomedia文件:
FileWriter f = new FileWriter("/sdcard/Android/data/CopyImage/cache/.nomedia");
Run Code Online (Sandbox Code Playgroud)
应用程序可以成功下载图像并将.nodata文件放在同一个文件夹中,但事实是,图像仍然出现在图库中.
怎么会这样?任何人都可以为我提供解决方案吗?
非常感谢你
在我的应用程序中,我试图从厨房中选择图像,以便将该图像传递给服务器.
代码在Android 5及更低版本上正常运行,但对于Nexus 5上的Android 6,我无法获取图像信息.记录我得到的痕迹
注意:Android 5及以下版本的代码运行正常
11-06 12:27:43.736: W/System.err(31678): java.lang.SecurityException: Permission Denial: reading com.google.android.apps.photos.contentprovider.MediaContentProvider uri content://com.google.android.apps.photos.contentprovider/0/1/content%3A//media/external/images/media/19138/ACTUAL/94710853 from pid=31678, uid=10111 requires the provider be exported, or grantUriPermission()
11-06 12:27:43.757: W/System.err(31678):
at android.os.Parcel.readException(Parcel.java:1599)
11-06 12:27:43.757: W/System.err(31678):
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
11-06 12:27:43.757: W/System.err(31678):
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
11-06 12:27:43.757: W/System.err(31678):
at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
11-06 12:27:43.757: W/System.err(31678):
at android.content.ContentResolver.query(ContentResolver.java:491)
11-06 12:27:43.757: W/System.err(31678):
at android.content.ContentResolver.query(ContentResolver.java:434)
11-06 12:27:43.758: W/System.err(31678):
at org.apache.cordova.file.ContentFilesystem.openCursorForURL(ContentFilesystem.java:258)
11-06 12:27:43.758: W/System.err(31678):
at org.apache.cordova.file.ContentFilesystem.getFileMetadataForLocalURL(ContentFilesystem.java:169)
11-06 12:27:43.758: W/System.err(31678):
at org.apache.cordova.file.FileUtils.getFileMetadata(FileUtils.java:822)
11-06 12:27:43.758: W/System.err(31678):
at org.apache.cordova.file.FileUtils.access$500(FileUtils.java:52)
11-06 …Run Code Online (Sandbox Code Playgroud)