私は Android の初心者開発者であり、SD カードの XML ファイルにアクセスしようとすると、次の問題が発生します。
まず、次のチェックを実行しました。 - 外部ストレージの読み取り/書き込み権限が Android マニフェストに付与されている - ファイルが指定された場所に存在する - チェックした: fileexists = true; 読むことができます = true; isfile = true - 外部ストレージの状態 = マウント
それでも、FileInputStream は FileNoteFoundException を返します。コード:
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//probeersel
public void myClickHandler(View view) {
switch (view.getId()) {
case R.id.button1:
XPath xpath = XPathFactory.newInstance().newXPath();
File mealsource = new File(getExternalFilesDir(null)
+ "/test.xml");
Toast.makeText(this, "External Files Dir: " + getExternalFilesDir(null), Toast.LENGTH_LONG).show();
Toast.makeText(this, "Exists: " + String.valueOf(mealsource.exists()), Toast.LENGTH_LONG).show();
Toast.makeText(this, "Can read: " + String.valueOf(mealsource.canRead()), Toast.LENGTH_LONG).show();
Toast.makeText(this, "Is file: " + String.valueOf(mealsource.isFile()), Toast.LENGTH_LONG).show();
Toast.makeText(this, "External Storage State: " + Environment.getExternalStorageState(), Toast.LENGTH_LONG).show();
Toast.makeText(this, "Absolute path " + mealsource.getAbsolutePath(), Toast.LENGTH_LONG).show();
FileInputStream mealstream = new FileInputStream(mealsource);
InputSource inputsource = new InputSource(mealstream);
expression = "Meals/Meal/ShrtDesc/text()";
meallist = (NodeList) xpath.evaluate(expression, inputsource, XPathConstants.NODE);
etc
要約すると、私のチェックはすべて、ファイルが読み取られてアクションの準備ができていることを示していますが、FileInputStream コンストラクターはそれを認識していないようです。どうしようかな?私は何を逃したのですか?どういうわけかxmlの内容と関係があるのでしょうか?
あなたが私に与えることができる助けや指針をありがとう。