2017-02-22 64 views
-1

我遇到了将文件写入Android存储的问题。我用了很多的例子,最恼人的问题是如何将密码保存到android上的文件?

java.io.FileNotFoundException:/存储/模拟/ 0 /安卓/ fileSD(拒绝)

是的,我将使用-permission我的清单

这是我的活动:

public class MainActivity extends Activity { 
    // init variables 
    EditText pass; 
    Button login; 
    String password; 
// final String DIR_SD = "/Android"; 
// final String FILENAME_SD = "fileSD"; 
// final String LOG_TAG = "myLogs"; 

//init onCreate method that provide our logic when activity start open 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

//  if(mFileName.()){ 
// 
//  } 

    pass = (EditText) findViewById(R.id.pass); 
    login = (Button) findViewById(R.id.button); 



    login.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      password = pass.getText().toString().trim(); 

       if (TextUtils.isEmpty(password)) { 

        pass.setError("password mustnot be empty"); 
        pass.focusSearch(View.FOCUS_DOWN); 

       } else if (password.length() >= 6 && password.length() <= 24) { 

        Toast.makeText(getApplicationContext(), "validation sucess", Toast.LENGTH_LONG).show(); 

        Intent intent = new Intent(MainActivity.this, new_activity.class); 
        startActivity(intent); 


       } else { 
        pass.setError("password length must be match:5=<password>=10"); 
        pass.focusSearch(View.FOCUS_DOWN); 
       } 


      } 
    }); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 

如果在第一次用户打开应用程序时,他输入密码,它应该写入文件。如果文件存在,我们应该读取它并与用户将要输入的通行证进行比较,如果它等于开始新活动,则显示不正确通过的消息。

请大家帮忙,我尝试了几天做到这一点,IDK的是我应该做的

+0

你的阅读文件代码在哪里? –

+0

你不想读取上面的代码中的任何文件 –

+1

1)Android API 23+你必须请求运行时权限2)为什么不使用SharedPrefences? –

回答

0

尝试使用SharedPreferences,你可以保存密码,这样

SharedPreferences sharedPreferences = getSharedPreferences("PrefName", MODE_PRIVATE); 
sharedPreferences.edit().putString("password", "Your Password").apply(); 

当你需要它,你可以轻松地检索

sharedPreferences.getString("password", "") 
0

不足以写它使用许可权,以你的清单,你应该处理它在运行时, 加上其一个坏主意,在文件存储用户密码,每个人都可以阅读

+0

我将散列密码 –

+0

然后检查此URL https://developer.android.com/training/permissions/requesting.html有关在运行时请求权限 –