Código comumente usado no desenvolvimento de aplicações android

“Meu aplicativo precisa de um receptor de transmissão. Alguém pode me lembrar como eu pode codificar um receptor de transmissão? E enquanto você está nisso, como é que uma atividade retornar um resultado? Oh, Parreira. Onde posso encontrar todas as coisas que rapidamente?”

Tendo exemplos dos tipos de código usado no desenvolvimento de aplicações Android pronto-a-corpo pode ser uma grande ajuda. Você encontrará a abundância de exemplos aqui.

actividades

Aqui está uma atividade que inicia outra atividade:

classe pública CheatSheetActivity estende Activityimplements onclickListener {MY_ACTION final String botão button1-estático = "com.allmycode.action"-static final String MY_URI = "my_scheme: my_scheme_specific_part"- @ Overridepublic vazio onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -setContentView (R.layout.main) -button1 = (Button) findViewById (R.id.button1) -button1.setonclickListener (this) -} public void onclick (Ver arg0) {intenção intenção = new Intent () - intent.setAction (MY_ACTION) -intent.setData (URI.parse (MY_URI)) - startActivity (intenção) -}}

E não se esqueça - quando você cria uma nova classe de actividade, você deve adicionar um correspondente elemento para o seu AndroidManifest.xml Arquivo. o OtherActivity filtro de intenção de elemento é algo como isto:

Video: Programe pelo celular - Programação com Python no Android | QPython3

Para obter um resultado de uma atividade, adicione o seguinte código (ou algo parecido com isso) para o seu app:

definitiva CODE_NUMBER int = 42-finais Cadeia CLASSNAME = "CheatSheetActivity"-public vazio onclick (Ver arg0) {Intenção intenção = new Intent () - intent.setAction (MY_ACTION) -intent.setData (URI.parse (MY_URI)) - startActivityForResult (intenção, CODE_NUMBER) -} protegido onActivityResult void (int Codenumber , resultCode int, intenção intenção) {if (resultCode == RESULT_OK) {if (Codenumber == CODE_NUMBER) {Log.i (CLASSNAME, intent.getData () getSchemeSpecificPart ()) -.}}}

E na atividade que cria o resultado, adicione código do tipo seguinte:

Intenção intenção = new Intent () - intent.setData (URI.parse ("resultado: Olá")) - setResult (RESULT_OK, intenção) -Término () -

Serviços

Um serviço normalmente faz o seu trabalho sem se preocupar (ou mesmo notificar) o usuário. Por exemplo, um serviço de preço das ações pode chegar à web e receba as últimas preços de picaretas favoritos do usuário. atividade de um outro aplicativo pode obter dados do serviço e exibir os dados na tela do dispositivo.

O código a seguir é um serviço de tempo completo (mas não muito precisos):

classe pública MyWeatherService estende Serviço {Mensageiro messengerToClient = null-MyIncomingHandler myIncomingHandler = new MyIncomingHandler () - Messenger messengerToService = new Mensageiro (myIncomingHandler) - @ Overridepublic IBinder onBind (Intenção intenção) {return messengerToService.getBinder () -} class MyIncomingHandler estende Handler { @Overridepublic handleMessage void (Mensagem incomingMessage) {resposta messengerToClient = incomingMessage.replyTo-Bundle = new Bundle () - reply.putString ("clima", "É escuro à noite.") -Message replyMessage = Message.obtain () - replyMessage.setData (resposta) -tentar {messengerToClient.send (replyMessage) -} catch (RemoteException e) {e.printStackTrace () -}}}}

Em outro pacote, você colocar o código para chamar o serviço de meteorologia. Aqui está um código de exemplo:

classe pública ServiceConsumerActivity estende Activityimplements onclickListener {Mensageiro messengerToService = null-MyIncomingHandler myIncomingHandler = new MyIncomingHandler () - Messenger messengerFromService = new Mensageiro (myIncomingHandler) conexão -ServiceConnection = new MyServiceConnection () - SharedPreferences prefs-booleano IsBound = false-vazio bind () { intenção intenção = new Intent () - intent.setAction ("com.allmycode.WEATHER") -isBound = bindService (intenção, conexão, Context.BIND_AUTO_CREATE) -} QueryService public void () {if (IsBound) {pacote pacote = new Bundle () - bundle.putString ("localização", "Filadélfia") -Mensagem mensagem = Message.obtain () - message.replyTo = messengerFromService-message.setData (bundle) -tentar {messengerToService.send (mensagem) -} catch (RemoteException e) {e.printStackTrace () -}} else { textView1.setText (R.string.service_not_bound) -}} class MyIncomingHandler estende Handler {@Overridepublic handleMessage void (Mensagem msg) {pacote Bundle = msg.getData () - textView1.setText (bundle.getString ("clima")) -}} void unbind () {if (IsBound) {unbindService (conexão) -isBound = false -}} class MyServiceConnection implementa ServiceConnection {public void onServiceConnected (ComponentName className, IBinder aglutinante) {messengerToService = new Mensageiro (aglutinante) - } public void onServiceDisconnected (ComponentName n) {messengerToService = null -.}} // Eu não incluem o método onCreate ou o método // onclick neste exemplo}

Claro, nenhum app sobrevive sem alguns elementos no arquivo de manifesto. Para registrar o serviço desta seção, você precisa de um elemento do tipo seguinte:

receptores de radiodifusão

Quando você faz uma transmissão, você arremessar uma intenção para fora no selvagem. receptores de radiodifusão com filtros intenção compatíveis acordar e fazer algo de útil com a informação de transmissão. (Depois de fazer algo com a informação de transmissão, o receptor volta a dormir. Na minha próxima encarnação, quero ser um receptor de transmissão.)

Para criar seu próprio receptor de radiodifusão, você estender Android do Receptor de radiodifusão classe e você declarar um OnReceive método. Por exemplo, o código a seguir responde às transmissões correspondentes:

classe pública MyReceiver estende BroadcastReceiver {@Overridepublic vazio OnReceive (contexto Contexto, Intenção intenção) {// Fazer coisas importantes}}

Outro aplicativo cria uma transmissão com código do seguinte tipo:

Intenção intenção = new Intent () - intent.setAction ("com.allmycode.ACTION") -sendBroadcast (intenção) -

Você pode registrar um receptor de radiodifusão em sua AndroidManifest.xml Arquivo:

Video: Aplicativo Android para leitura de código de barras - Fatec de Carapicuíba

Para mais flexibilidade, você pode registrar um receptor no seu código Java. O seguinte código Java faz essencialmente o que a elemento numa AndroidManifest.xml arquivo faz:

IntentFilter filtro = new IntentFilter () - filter.addAction ("com.allmycode.ACTION") -registerReceiver (novo MyReceiver (), filtro) -

Provedores de conteúdo

provedor de conteúdo de um aplicativo torna os dados disponíveis para outros aplicativos que são executados no mesmo dispositivo. A interface do provedor se assemelha a interface de um banco de dados, com tabelas, linhas, cursores, e todas essas coisas boas. Por exemplo, o código para consultar um provedor de conteúdo parecido com este:

Cursor de consulta pública (Uri uri, String [] colunas, corda whereClause, String [] whereArgs, String sortOrder) {cursor cursor = código nulo-int = uriMatcher.match (uri) -se (código == 1) {cursor = db .query (SIMPLETABLE, colunas, whereClause, whereArgs, null, null, sortOrder) -} else if (código == 2) {String [] = {columnNames "_identidade", "nome", "montante" } -String [] = {rowValues "Mesa ", "4 ", "2" } -MatrixCursor matrixCursor = novo MatrixCursor (columnNames) -matrixCursor.addRow (rowValues) -cursor = matrixCursor-}} retorno Cursor-

fragmentos

UMA fragmento é como uma visão - uma coisa visível que possa utilizar dentro de uma atividade. Mas ao contrário de uma visão, um fragmento tem seus próprios métodos de ciclo de vida. Então Android pode criar uma pequena pilha de fragmentos dentro de uma atividade. Quando o usuário pressiona o botão Voltar, Android aparece um fragmento fora da pilha. (Se não houver fragmentos de pop, Android aparece toda a atividade da pilha de tarefas.)

Você pode colocar um fragmento para o seguinte layout quadro:

Para colocar um fragmento para o layout, você executa uma transação fragmento. Aqui está o que uma transação fragmento parece:

DocsFragment docsFragment = DocsFragment.newInstance (índice) -FragmentManager fragmentManager = getFragmentManager () - FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction () - fragmentTransaction.replace (R.id.docs, docsFragment) -fragmentTransaction.addToBackStack (nulo) -fragmentTransaction.commit ( ) -

Intentos e Intent Filtros



Quando a intenção encontra o filtro de intenção correta, o resultado é um jogo feito no céu. Mas as regras para as intenções combinando com filtros são complicadas. As regras ler como as cláusulas legais em um acordo pré-nupcial.

Você pode usar métodos Java para descrever uma intenção. Aqui estão alguns métodos utilizados com frequência:

  • setAction: Define a ação da intenção. (Uma intenção pode ter apenas uma ação.)

  • Adicionar categoria: Adiciona uma categoria para a intenção. (Uma intenção pode ter muitas categorias.)

  • setdata: Define URI da intenção, e remove o tipo MIME do intenção (se a intenção tem um tipo de MIME).

  • setType: Define o tipo MIME do intenção e remove URI da intenção (se a intenção tem um URI).

  • setDataAndType: Define tanto URI da intenção e tipo MIME da intenção. De acordo com os documentos, “Este método deve muito raramente ser utilizado.”

Você também pode usar o código XML para descrever uma intenção.

No URI https://allmycode.com:80/android, o esquema é http, o anfitrião é allmycode.com, a porta está 80, e o caminho é andróide. A autoridade (que não é um dos atributos em um elemento, mas é útil saber sobre) é allmycode.com:80.

Você normalmente definir os valores de um filtro de intenção na AndroidManifest.xml Arquivo. Mas em código Java, o android.content.IntentFilter classe tem vários métodos úteis. Aqui estão algumas delas:

  • addAction: Adiciona uma acção para o filtro.

  • Adicionar categoria: Adiciona uma categoria para o filtro.

  • addDataScheme: Adiciona um esquema para o filtro.

  • addDataAuthority: Adiciona uma autoridade para o filtro.

  • addDataPath: Adiciona um caminho para o filtro.

  • addDataType: Adiciona um tipo MIME para o filtro.

Video: Tutorial de desenvolvimento de Jogos para Android

Um filtro de intenção pode ter muitas ações, muitas categorias, e assim por diante.

Aqui está uma breve lista de requisitos para um jogo entre uma intenção e um filtro de intenção. Esta lista não está completa por isso, se você quiser uma lista completa, é melhor comprar Android Application Development All-in-One For Dummies por Barry Burd.

  • Se a intenção tem uma ação, a fim de coincidir com a intenção, um filtro de intenção deve ter um comportamento idêntico. O filtro de intenção pode ter ações adicionais. Qualquer uma destas ações adicionais não têm efeito sobre a partida.

  • Se a intenção tem categorias, a fim de coincidir com a intenção, um filtro de intenção deve ter estes (e possivelmente mais) categorias.

  • Se a intenção tem um tipo de MIME, a fim de coincidir com a intenção, um filtro de intenção deve ter um tipo MIME correspondente. O filtro de intenção pode ter tipos MIME adicionais. Qualquer um destes tipos MIME adicionais não têm efeito sobre a partida.

    Video: Programando ANDROID #3 Criando primeira aplicação [HD]

  • Se um filtro de intenção tem tipos de MIME, a fim de coincidir com o filtro de intenção, a intenção deve ter um tipo MIME e tipo MIME da intenção deve corresponder a um dos tipos de MIME do filtro.

  • De forma limitada, a adequação dos tipos de MIME pode envolver wildcards e expressões regulares.

  • Se a intenção tem um esquema de URI, a fim de coincidir com a intenção, um filtro de intenção deve ter um esquema URI correspondência.

  • Se um filtro de intenção tem URI regimes, a fim de coincidir com o filtro de intenção, a intenção deve ter um esquema URI e esquema de URI da intenção deve corresponder a um dos esquemas de URI do filtro.

Para terminar esta lista, copie as duas últimas regras, mudando uma ou duas palavras em cada uma das cópias:

  • Se a intenção tem um URI hospedeiro, a fim de coincidir com a intenção, um filtro de intenção deve ter um URI correspondência hospedeiro.

  • Se um filtro de intenção tem URI anfitriões, a fim de coincidir com o filtro de intenção, a intenção deve ter um URI hospedeiro e URI da intenção hospedeiro deve corresponder a um dos URI do filtro hospedeiros.

  • Se a intenção tem um URI porta, a fim de coincidir com a intenção, um filtro de intenção deve ter um URI correspondência porta.

  • Se um filtro de intenção tem URI portos, a fim de coincidir com o filtro de intenção, a intenção deve ter um URI porta e URI da intenção porta deve corresponder a um dos URI do filtro PORts.

  • Se a intenção tem um URI caminho, a fim de coincidir com a intenção, um filtro de intenção deve ter um URI correspondência caminho.

  • Se um filtro de intenção tem URI caminhos, a fim de coincidir com o filtro de intenção, a intenção deve ter um URI caminho e URI da intenção caminho deve corresponder a um dos URI do filtro caminhos.


Publicações relacionadas