Android:应用程序在一台设备上运行良好而不在另一台设备上运行

时间:2012-07-23 08:20:03

标签: android permissions compatibility

我遇到了一个问题,我的应用程序在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属性。

1 个答案:

答案 0 :(得分:1)

请参阅getExternalStorageDirectory()文档。

  

获取Android外部存储目录。这个目录可能没有   如果用户已将其安装在其上,则目前可以访问   电脑,已从设备中删除,或其他一些问题   发生了。您可以使用确定其当前状态   getExternalStorageState()。

在访问之前检查null