0
私はiTextpdfを今日試しています。主に :java.io.FileNotFoundException: /storage/emulated/0/Download/pdfdemo20170521_145348.pdf: open failed: EACCES (Permission denied)
java.io.FileNotFoundException Itextpdfライブラリチュートリアル
は、私はすでに
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
などの適切な権限を実装しているが、それはまた、動作しません。私のファイル処理のコードは次のとおりです。
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();
}
私がlogcatを見ると、107行目のエラーが表示されます。 OutputStream output = new FileOutputStream(myFile);
十分ではありませんアンドロイド6上とマニフェストにパーミッションを要求する上記の場合。ユーザーにこれらのアクセス許可を与えるように指示するコードを追加する必要があります。実行時アクセス許可。 – greenapps
'pdfFolder.mkdir(); Log.i( "TAG"、 "Pdf Directory created"); '。誤ったログと真実。 mkdirの戻り値を確認してください。そして、対処する。あなたのディレクトリは作成されません。あなたはそれを知らない。まるでそれがそこにあるかのように続行します。 – greenapps
どのように私は彼らに許可を求めるように促すのですか?私がしたことはすべてマニフェストに含まれていました。 – JJCADIZ