将 EditText 中的文本保存到文件时出现问题

时间:2021-06-16 01:35:44

标签: java android file

这段代码接收你想在editText中注册的熟人的信息,然后点击finButton将你收到的信息保存为一个名为friendlist.txt的文件。 但是,Toast 消息是从当前按下 finButton 时执行的 try-catch 语句中输出的。 还有,ch​​eckpermission 不起作用,它被包裹在 try~catch 语句中,但在 logcat 上没有输出。

和清单。

<块引用>

使用权限 android:name="android.permission.READ_EXTERNAL_STORAGE"

<块引用>

使用权限 android:name="android.permission.WRITE_EXTERNAL_STORAGE"

已写。

请告诉我解决方案。 而且这个内容是翻译的,所以句子可能很奇怪。

当您按下 finButton 时,logcat 如下所示。

第116行对应的代码是这个。

<块引用>

FileOutputStream outstream = openFileOutput("friendList.txt", Activity.MODE_WORLD_WRITEABLE);

logcat

public class EnteringInformationOfFriendActivity extends AppCompatActivity {
    Button finButton;
    EditText phoneNumberEditText, nameEditText, emailEditText, groupEditText, memoEditText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_entering_information_of_friend);

        phoneNumberEditText = (EditText) findViewById(R.id.phoneNumberEditText);

        nameEditText = (EditText) findViewById(R.id.nameEditText);
        emailEditText = (EditText) findViewById(R.id.emailEditText);
        groupEditText = (EditText) findViewById(R.id.groupEditText);
        memoEditText = (EditText) findViewById(R.id.memoEditText);

        try{
            checkPermission();
        }
        catch (Exception e){
            StringWriter sw = new StringWriter();
            e.printStackTrace(new PrintWriter(sw));
            String exceptionAsStrting = sw.toString();
            Log.e("CSP", exceptionAsStrting);

            e.printStackTrace();
        }

        finButton = (Button) findViewById(R.id.finButton);
        finButton.setOnClickListener(v -> {
            try{
                String phoneTxt = phoneNumberEditText.getText().toString().trim();
                String nameTxt = nameEditText.getText().toString().trim();
                String emailTxt = emailEditText.getText().toString().trim();
                String groupTxt = groupEditText.getText().toString().trim();
                String memoTxt = memoEditText.getText().toString().trim();

                String friendInfoTxt = phoneTxt + "-" + nameTxt + "-" + emailTxt + "-" + groupTxt + "-" + memoTxt;

                FileOutputStream outstream = openFileOutput("friendList.txt", Activity.MODE_WORLD_WRITEABLE);

                outstream.write(friendInfoTxt.getBytes());

                outstream.close();

                Intent intent = new Intent(v.getContext(), FriendListActivity.class);
                startActivity(intent);
            } catch (Exception e){
                StringWriter sw = new StringWriter();
                e.printStackTrace(new PrintWriter(sw));
                String exceptionAsStrting = sw.toString();
                Log.e("Filesave", exceptionAsStrting);

                e.printStackTrace();
                Toast.makeText(this.getApplicationContext(), "Save failed.", Toast.LENGTH_SHORT).show();
            }
        });
    }
    public void checkPermission(){
        if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

尝试使用 Context.MODE_APPEND 或 Context.MODE_PRIVATE 而不是 Activity.MODE_WORLD_WRITEABLE