Я пишу приложение для Android, которое включает в себя выбор нескольких изображений и загрузку их на сервер синтаксического анализа. Я реализовал выбор нескольких изображений, используя Telegram Android Gallery picker. Моя проблема возникает, когда пришло время конвертировать изображения в растровые изображения и сохранять их в Parse. Я получаю следующее сообщение об ошибке:Загрузите несколько изображений на сервер Parse Android Java
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {[package]/[package].MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
И
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
Все входные приветствуется! Благодарю.
Вот мой код:
public class MainActivity extends AppCompatActivity {
private Bitmap bitmap;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 2) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {}
}
}
public void pickImage(View view) {
GalleryConfig config = new GalleryConfig.Build()
.limitPickPhoto(8)
.singlePhoto(false)
.hintOfPick("this is pick hint")
.filterMimeTypes(new String[] {
"image/*"
})
.build();
GalleryActivity.openActivity(MainActivity.this, 2, config);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//list of photos of seleced
List <String> photos = (List <String>) data.getSerializableExtra(GalleryActivity.PHOTOS);
if (photos != null) {
for (String photo: photos) {
// BitmapFactory.Options options = new BitmapFactory.Options();
// options.inPreferredConfig = Bitmap.Config.ARGB_8888;
bitmap = BitmapFactory.decodeFile(photo);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] image = stream.toByteArray();
ParseFile file = new ParseFile("image.png", image);
file.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.i("did it fail?", "no");
} else {
// Failed
Log.i("did it fail?", "yes");
}
}
});
ParseObject iupload = new ParseObject("ImageUpload");
iupload.put("ImageName", "productImage");
iupload.put("ImageFile", file);
iupload.saveInBackground();
}
Log.i("Is it done?", "Yes");
} else {
Log.i("Is it done?", "nope");
}
//list of videos of seleced
// List<String> vides = (List<String>) data.getSerializableExtra(GalleryActivity.VIDEOS);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[] {
Manifest.permission.READ_EXTERNAL_STORAGE
}, 2);
}
}
}
}
Редактировать - Есть на самом деле две ошибки с той же ошибкой: - если изображение с телефона он попадает в линию Разбор и аварий приложений, - если изображение с карты SD сработает до этого. Тьфу
Edit 2 - Я исправил ошибки в Edit # 1, так что теперь это 100% что-то не работает с разбором!
Да, в классе StarterApplication! – Ender
Я заново создаю приложение, и, действительно, мне не хватало декларации Parse в манифесте android. Однако теперь я получаю следующую ошибку времени выполнения: java.lang.RuntimeException: Ошибка предоставления результата ResultInfo {who = null, request = 2, result = -1, data = Intent {(имеет дополнительные функции)}} для действия {com .example.igp/com.example.igp.MainActivity}: java.lang.IllegalArgumentException: значение может быть не равным нулю. – Ender
Пожалуйста, создайте еще один вопрос для другой проблемы. Закройте это, указав правильный ответ. – Divers