Ich habe versucht iTextpdf heute Ang in einige schäbige Fehler geraten. vor allem: java.io.FileNotFoundException: /storage/emulated/0/Download/pdfdemo20170521_145348.pdf: open failed: EACCES (Permission denied)
java.io.FileNotFoundException auf Itextpdf Library tutorial
Ich habe bereits die richtigen Berechtigungen wie
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
umgesetzt, aber es funktioniert auch nicht. Hier ist der Code für meine Dateiverarbeitung:
public class SelfNoteFragment extends Fragment {
private View mRootView;
private EditText mSubjectEditText, mBodyEditText;
private Button mSaveButton;
public SelfNoteFragment() {
// Required empty public constructor
}
public static SelfNoteFragment newInstance(){
SelfNoteFragment fragment = new SelfNoteFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mRootView = inflater.inflate(R.layout.fragment_self_note, container, false);
mSubjectEditText = (EditText) mRootView.findViewById(R.id.edit_text_subject);
mBodyEditText = (EditText) mRootView.findViewById(R.id.edit_text_body);
mSaveButton = (Button) mRootView.findViewById(R.id.button_save);
mSaveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mSubjectEditText.getText().toString().isEmpty()){
mSubjectEditText.setError("Subject is empty");
mSubjectEditText.requestFocus();
return;
}
if (mBodyEditText.getText().toString().isEmpty()){
mBodyEditText.setError("Body is empty");
mBodyEditText.requestFocus();
return;
}
try {
createPdf();
} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(getActivity(), "FILE", Toast.LENGTH_SHORT).show();
} catch (DocumentException e) {
e.printStackTrace();
Toast.makeText(getActivity(), "Document", Toast.LENGTH_SHORT).show();
}
}
});
return mRootView;
}
private void createPdf() throws FileNotFoundException, DocumentException {
File pdfFolder = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS), "pdfdemo");
if (!pdfFolder.exists()) {
pdfFolder.mkdir();
Log.i("TAG", "Pdf Directory created");
}
//Create time stamp
Date date = new Date() ;
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(date);
//Filename
File myFile = new File(pdfFolder + timeStamp + ".pdf");
OutputStream output = new FileOutputStream(myFile);
//Designate the size
Rectangle pagesize = new Rectangle(216f, 720f);
Document document = new Document(pagesize, 36f, 72f, 108f, 180f);
PdfWriter.getInstance(document, output);
//OPEN ITEXT FOR DOCUMENT SCANNING
document.open();
document.add(new Paragraph(mSubjectEditText.getText().toString()));
document.add(new Paragraph(mBodyEditText.getText().toString()));
//If scanning is done, Close the document
document.close();
}
Wenn ich mein Logcat ansehe, erscheint ein Fehler in der Zeile 107. Das ist die Zeile: OutputStream output = new FileOutputStream(myFile);
Wenn auf Android sechs und über Berechtigungen in einem offenkundigen anfordernden ist nicht genug. Sie sollten Code hinzufügen, damit der Benutzer diese Berechtigungen ebenfalls erteilt. Laufzeitberechtigungen – greenapps
'pdfFolder.mkdir(); Log.i ("TAG", "Pdf-Verzeichnis erstellt"); '. Irreführendes Protokoll und unwahr. Überprüfen Sie den Rückgabewert von mkdir. Und handle entsprechend. Ihr Verzeichnis wurde nicht erstellt. Und du weißt es nicht. Und du gehst weiter als ob es da wäre. – greenapps
Wie fordere ich sie auf, nach Berechtigungen zu fragen? Alles, was ich tat, war Manifest. – JJCADIZ