Нужно при клике на кнопке открыть приложение камеры, сделать снимок и сохранить его. Вот сам обработчик:
final Intent captureImage = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
boolean canTakePhoto = mPhotoFile != null && captureImage.resolveActivity(packageManager) != null;
mPhotoButton.setEnabled(canTakePhoto);
mPhotoButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View м) {
Uri uri = FileProvider.getUriForFile(getActivity(),
"com.bignerdranch.android.criminalintent.fileprovider",
mPhotoFile);
captureImage.putExtra(MediaStore.EXTRA_OUTPUT, uri);
List<ResolveInfo> cameraActivities = getActivity().getPackageManager()
.queryIntentActivities(captureImage, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo activity : cameraActivities){
getActivity().grantUriPermission(activity.activityInfo.packageName,
uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
startActivityForResult(captureImage, REQUEST_PHOTO);
}
});
В строке
Uri uri = FileProvider.getUriForFile(getActivity(),
"com.bignerdranch.android.criminalintent.fileprovider",
mPhotoFile);
выкидывает NullPointerException, хотя в mPhotoFile не null. Как это исправить, в чем может быть проблема? Вот само исключение:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
В манифесте объявил провайдер:
<provider
android:authorities="com.bignerdrench.android.criminalintent.fileprovider"
android:name="android.support.v4.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/files" />
</provider>
Метод для получения имени файла:
public String getPhotoFilename() {
return "IMG_" + getId().toString() + ".jpg";
}
Метод для получения файла:
public File getPhotoFile(Crime crime){
File filesDir = mContext.getFilesDir();
return new File(filesDir, crime.getPhotoFilename());
}
Что не так делаю, не пойму. Заранее благодарен за помощь.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеется сервер который слушает команды от подключившихся клиентовПри обработке команды(запросов) клиенту отправляется массив данных
Возможно этот вопрос уже задавался, но я его так и не нашелКак добавить пункт в "глобальное" контекстное меню
Пишу прогу на java и графический интерфейс для нее на javafx все было хорошоНо в один момент начала выскакивать ошибка java tm platform se binary не отвечает
Создал заготовку под разработку Enterprise приложенияВ качестве сборщика приложения использую Maven