我遇到了一个问题,我的应用程序在Galaxy Tab 7.7 GT-P6800上工作正常,我用于调试目的,在我的Galaxy Pocket上运行并创建一个文件夹来放置文件甚至服用输入和所有的东西,但它不是创建文件。我在eclipse中开发,应用程序的构建SDK是Android 2.3.3(API 10)。
下面给出了应用程序的代码,找不到问题所在......
package com.android.app1;
public class MainActivity extends Activity {
//Timestamp for file name e.g. Data_7-19-2012
SimpleDateFormat s1 = new SimpleDateFormat("MM-dd-yyyy_hh:mm:ss");
final String format1 = s1.format(new Date());
final public String FileName = "Data_"+format1+".csv";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText addbarcode = (EditText) findViewById(R.id.editText1);
addbarcode.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_ENTER:
//to get Timestamp
SimpleDateFormat s = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss");
String format = s.format(new Date());
//get barcode in a variable
Editable barcode = addbarcode.getText();
final String DATASTRING = new String(""+barcode+","+format+"");
try
{
File root = new File(Environment.getExternalStorageDirectory(), "BarcodeData");
if (!root.exists()) {
root.mkdirs();
}
//Showing file directory
TextView etDir= (TextView)findViewById(R.id.textView1);
etDir.setText(root.toString());
File gpxfile = new File(root, FileName);
BufferedWriter bW;
bW = new BufferedWriter(new FileWriter(gpxfile, true));
bW.write(DATASTRING);
bW.newLine();
bW.flush();
bW.close();
}
catch(IOException e)
{
e.printStackTrace();
}
String readString = new String(DATASTRING);
TextView etData= (TextView)findViewById(R.id.textView2);
etData.setText(readString);
//Clear the editview for new entries
addbarcode.setText("");
return true;
default:
break;
}
}
return false;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.send:
final File dir = getFilesDir();
final File shareFile = new File(dir, FileName);
Uri u1 = null;
u1 = Uri.fromFile(shareFile);
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Person Details");
sendIntent.putExtra(Intent.EXTRA_STREAM, u1);
sendIntent.setType("text/csv");
startActivity(sendIntent);
break;
}
return true;
}
}
我甚至添加了所需的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
甚至可以从项目属性中设置Java Build Path属性。
答案 0 :(得分:1)
请参阅getExternalStorageDirectory()文档。
获取Android外部存储目录。这个目录可能没有 如果用户已将其安装在其上,则目前可以访问 电脑,已从设备中删除,或其他一些问题 发生了。您可以使用确定其当前状态 getExternalStorageState()。
在访问之前检查null
。