Нужно при клике на кнопке открыть приложение камеры, сделать снимок и сохранить его. Вот сам обработчик:
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());
}
Что не так делаю, не пойму. Заранее благодарен за помощь.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется сервер который слушает команды от подключившихся клиентовПри обработке команды(запросов) клиенту отправляется массив данных
Возможно этот вопрос уже задавался, но я его так и не нашелКак добавить пункт в "глобальное" контекстное меню
Пишу прогу на java и графический интерфейс для нее на javafx все было хорошоНо в один момент начала выскакивать ошибка java tm platform se binary не отвечает
Создал заготовку под разработку Enterprise приложенияВ качестве сборщика приложения использую Maven