Pergunta sobre image, android, uri, android-intent – Tentando fornecer uma imagem para apps que chamam a intenção GET_CONTET

3

Eu estou procurando uma solução por um bom tempo e estou ficando frustrado mais e mais.

Quero que meu aplicativo forneça conteúdo para outros apps. Por exemplo: ao usar o aplicativo do GoogleMail, você pode adicionar um anexo. Uma caixa de diálogo será aberta mostrando todos os aplicativos que podem fornecer um arquivo para o anexo. Meu aplicativo já está na caixa de diálogo, porque eu defini uma atividade com um filtro de intenção como este:

<code>    <intent-filter >
            <action android:name="android.intent.action.GET_CONTENT" />
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.OPENABLE" />
            <data android:mimeType="image/*" />
        </intent-filter>
</code>

Então, quando você escolhe meu aplicativo, ele está iniciando a atividade. A atividade permite ao usuário selecionar uma foto e gravá-la no cartão SD. Por enquanto, tudo bem. Mas como posso devolvê-lo corretamente? Porque o anexo no GoogleMail nunca é feito. Estou retornando assim:

<code>if(file!=null)
{
  Intent resultIntent=new Intent();
  resultIntent.setType("image/jpg");  

  Uri uri=Uri.fromFile(file);

  //uri=Uri.parse(uri.toString().replace("file", "content"));
  resultIntent.putExtra(Intent.EXTRA_STREAM, uri); 
  resultIntent.putExtra(Intent.EXTRA_UID, uri); 
  resultIntent.setData(uri);
  setResult(RESULT_OK, resultIntent);
  finish();
}
</code>

Eu ficaria tão feliz se alguém pudesse me ajudar. Eu acredito que é uma coisa simples que estou fazendo errado, mas não consigo encontrar nada que me ajude. :(

Cumprimentos

você encontrou uma solução que funciona? Estou preso no mesmo ponto.resultIntent.putExtra(Intent.EXTRA_STREAM, uri); resultIntent.putExtra(Intent.EXTRA_UID, uri);  não funcionou para mim. mas, mesmo que eu veja o anexo no Gmail, ele não será enviado. philipp

Sua resposta

1   a resposta
1

Você provavelmente precisará implementar um provedor de fluxo. Não há realmente nenhum bom guia lá fora, masisto é o mais próximo que pude encontrar.

Perguntas relacionadas