MURUGAN MURUGAN
MURUGAN MURUGAN

Reputation: 1

Getting content from OnActivityResult

I am doing a texttospeech project to import txt file and read its contents using storage access framework . After OnActivityResult how to get the content to string variable and pass it to next activity . I need to copy the txt file content to next activity edittext

package com.texttospeech.texttospeech;


import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.texttospeech.Main2Activity;

public class MainActivity extends AppCompatActivity {

private static final int READ_REQUEST_CODE = 42;
private Button button;

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

    button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            performFileSearch();
        }
    });
}

private static final int EDIT_REQUEST_CODE = 42;
/**
 * Fires an intent to spin up the "file chooser" UI and select an image.
 */
private void performFileSearch() {
    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
    // file browser.
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);

    // Filter to only show results that can be "opened", such as a
    // file (as opposed to a list of contacts or timezones).
    intent.addCategory(Intent.CATEGORY_OPENABLE);

    // Filter to show only text files.
    intent.setType("text/plain");

    startActivityForResult(intent, EDIT_REQUEST_CODE);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData){
    if(requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK){
        Uri uri = null;
        if (resultData!= null){
            uri = resultData.getData();


        }
    }
}
}

Upvotes: 0

Views: 1375

Answers (3)

Kristian
Kristian

Reputation: 202

Problem I ran into was that the class couldn't reccognise getContentResolver() but later I realised that I am in fragment so for that you need to pass context first :

getActivity().getContentResolver() .. or simply
context.getContentResolver()

Upvotes: 0

greenapps
greenapps

Reputation: 11214

You open an InputStream for the obtained uri and then read from the stream as you would do if you had used a FileInputStream.

InputStream is = getContentResolver().openInputStream(resultData.getData());

Upvotes: 1

Mohammad Zarei
Mohammad Zarei

Reputation: 1802

I guess this will help you:

String text = readText(uri);

private String readText(Uri uri) {
    File f = new File(uri.toString());
    FileInputStream inputStream = null;
    try {
        inputStream = new FileInputStream(f);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    int i;
    try {
        i = inputStream.read();
        while (i != -1) {
            byteArrayOutputStream.write(i);
            i = inputStream.read();
        }
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    return byteArrayOutputStream.toString();
}

Let me know if you had any question.

Upvotes: 0

Related Questions