1

我正在使用库Android-Image-Cropper(这很棒!),有些东西我不太明白。

我正在使用来自本地文件系统(即图库、文件管理器)的相机来使用该库来添加/更新个人资料图片。

尽管没有向我的清单添加任何存储使用权限,但我仍然可以捕获图片或从文件系统中选择一张图片。

是否与我没有保存图片并将其从 URI 中直接提取到我的 SharedPreferences 有关?

Manifest 文件的权限部分:

<uses-feature
    android:name="android.hardware.bluetooth_le"
    android:required="true" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />

在 Fragment 中使用的示例:

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.userImage:
            CropImage.activity()
                    .setGuidelines(CropImageView.Guidelines.ON)
                    .setCropShape(CropImageView.CropShape.OVAL)
                    .setFixAspectRatio(true)
                    .setMinCropWindowSize(150,150)
                    .setScaleType(CropImageView.ScaleType.CENTER)
                    .start(mActivity, this);
            break;
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d("AddNewUserFragment", "[onActivityResult]");
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
    {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
        if (resultCode == RESULT_OK) {
            Uri resultUri = result.getUri();

            try {
                newProfilePic = mPalPhotoManager.getThumbnail(resultUri);
                String encodeUserImage = mPalPhotoManager.encodeImage(newProfilePic);
                mPalPhotoManager.saveImageToPreferences(encodeUserImage);
                mPalPhotoManager.setUserImage(newProfilePic, mUserImage);
                saveImageToServer = true;
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
            result.getError().printStackTrace();
            saveImageToServer = false;

        }
    }
}
4

1 回答 1

1

如果有人遇到这个问题,在图书馆的已关闭问题中有一个关于这个确切问题的 线程

于 2018-06-15T13:11:14.547 回答