Pergunta

Estou trabalhando em um widget que alterará os dados que ele está exibindo quando um usuário toca nele. Normalmente, isso seria fácil de lidar, mas meu provedor de widget de aplicativo está lidando com várias instâncias de widgets que possuem diferentes conjuntos de dados. Com isso dito, quando um usuário toca no widget, é lançado um PENDENDINTENT que chama o método alterado (). Dentro da intenção lançada, é onde eu guardo o ID do widget, então alterado o () sabe qual conjunto de dados usar. No começo, eu estava armazenando IDs de widgets nos extras da intenção, mas descobri que há um bug na maneira como os widgets do Android lidaram com os extras de intenção do widget, então agora estou tentando armazenar o widget passando um URL usando o método setData () (formatado Como o conteúdo: widgetId IE Conteúdo: 24, etc.).

É assim que estou definindo os dados para o PendingIntent:

Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA");
changeData.setData(Uri.parse("content:" + currentWidgetId));
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0);

No entanto, uma vez que tento testar isso, o método onrecieve () que geralmente é chamado quando um widget é tocado não é mais chamado. Existe algo que eu preciso configurar no meu arquivo de manifesto do Android para este trabalho corretamente ou há algo que estou fazendo completamente errado?

Obrigado por reservar um tempo para ler isso, Tony

Foi útil?

Solução

Você precisa combinar

<data android:scheme="content" />

ou

IntentFilter filter = new IntentFilter("com.tonycosentini.mintdroid.CHANGE_DATA");
filter.addDataScheme("content");

no seu filtro de intenção.

Depende se você declarar o filtro em XML ou Java.

http://developer.android.com/guide/topics/intents/intents-filters.html

Um objeto de intenção que contém um URI, mas nenhum tipo de dados (e um tipo não pode ser inferido a partir do URI) passa o teste apenas se o URI corresponder a um URI no filtro e o filtro da mesma forma não especificar um tipo. Este será o caso apenas para URIs como o Mailto: e Tel: que não se referem aos dados reais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top