これが私のコードです。何が起こるかというと、アプリを最初に起動したときにファイルを選択しようとすると、resultCode が 0 です。2 回目にボタンをクリックしてエクスプローラーを開くと、ファイルを選択すると、resultCode が -1 になるので、成功しました。ファイルを開きます。初めて何が起こるか分かりますか?なぜコード0が返されるのか理解できないようです? みんなありがとう。PSこれはひどいコーディングですが、Androidでファイルを開く手順を理解しようとしているだけです。ありがとう。
public class MainActivity extends Activity implements OnClickListener {
final int ACTIVITY_CHOOSE_FILE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button my_button = (Button) findViewById(R.id.activity);
my_button.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/");
startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.v("onActivityResult","requestCode is: " + requestCode + " resultCode" + resultCode);
if ((requestCode == ACTIVITY_CHOOSE_FILE) && (resultCode == RESULT_OK)) {
Log.v("onActivityResult","Passes through if statement");
//String fileSelected = data.getStringExtra("fileSelected");
String FilePath = data.getData().getPath();
TextView my_text = (TextView) findViewById(R.id.textView1);
my_text.setText(FilePath);
StringBuilder text = null;
try{
Scanner input = new Scanner(FilePath);
//File dir = Environment.getExternalStorageDirectory();
//File yourFile = new File(dir, FilePath);
//Read text from file
text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(FilePath));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
}
catch (IOException e) {
//You'll need to add proper error handling here
}
}catch(Exception e){
Log.v("file not opened","THE FILE WAS NOT OPENED");
}
my_text.setText(text);
}
}
}