Android получает данные из gmail, вложение - json - PullRequest
0 голосов
/ 29 марта 2019

Что я хочу: Получить данные из json во вложении gmail.

Описание: Откройте Gmail, щелкните вложение, которое является файлом json. JSON-файл обрабатывает данные, которые мне нужны для обработки.

В Манифесте я объявил

<intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <data android:mimeType="application/json"/>
                <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

Далее я использую

Intent intent = getIntent();        
if(intent.getAction().equals(Intent.ACTION_VIEW)){ 
intent.getData <- I suppose from here i can get my infomation
        }

Но intent.getData возвращает только Uri, и я читаю кого-то, кому я должен использовать ContentResolver, InputStream и что-то еще, например, чтобы записать мои данные из json в строку. Если кто-то может объяснить, как это работает на примере, я буду признателен.

1 Ответ

0 голосов
/ 29 марта 2019

Хорошо, у меня есть

if (intent.getAction().equals(Intent.ACTION_VIEW)) {
            Toast.makeText(this, "work", Toast.LENGTH_SHORT).show();
            Uri data = intent.getData();
//            ContentResolver contentResolver = getContentResolver();
            String text = getStringFromShare(data);
            Log.d("sasas", "onCreate: sometext");
        }
    }

    private String getStringFromShare(Uri data) {
        String text = null;
        try {

            ContentResolver cr = getApplicationContext().getContentResolver();
            InputStream is = cr.openInputStream(data);
            if (is != null) {

                StringBuffer buf = new StringBuffer();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                String str;
                if (is != null) {
                    while ((str = reader.readLine()) != null) {
                        buf.append(str);
                    }
                }
                is.close();
                text = buf.toString();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return text;
    }
...