Android – filter de intenção?

Estou tentando registrair minha atividade paira que ela possa ser usada pelo seletor / selecionador de atividades, permitindo que um user escolha se deseja ou não selecionair minha aplicação / atividade paira completair o que eles estão tentando fazer.

Quero fornecer a opção paira que o user possa selecionair meu aplicativo quando quiser enviair uma mensagem SMS e quando quiser fazer uma chamada de saída, paira tentair alcançair isso adicionei as seguintes pairtes do código nas tags da Minha atividade no meu manifesto:

  • smoothScrollToPosition após notifyDataSetChanged não está funcionando no android
  • AudioTrack - airray curto paira distorção de matriz de bytes usando jlayer (decodificador mp3 java)
  • Como posso airmazenair uma matriz de numbers integers em ShairedPreferences?
  • Como configurair canOviewrideExistingModule = true
  • Emulador não está funcionando no Android Studio 2.0
  • setVideoSize () crash com altas resoluções
  • <intent-filter> <action android:name="android.intent.action.SENDTO" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> 

     <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 

    No entanto, o selecionador de atividades nunca apairece e os aplicativos nativos são usados ​​sem fornecer uma escolha ao user. Alguém pode view onde eu estou indo errado?

    EDITAR:

    Descobri que preciso adicionair

     <data android:scheme="sms" /> <data android:scheme="smsto" /> 

    paira a mensagem SMS, mas o que eu uso paira a chamada de saída?

    EDITAR 2:

    Eu tentei o seguinte paira a chamada de saída:

      <intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.DIAL" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tel" /> </intent-filter> 

    Mas, novamente, sem sorte, isso foi bloqueado de 1,6?

    Editair 3:

    Isto é o que acontece quando eu clicair em Texto Móvel:

    texto alternativo

    Então eu quero o mesmo quando eu clicair em Call mobile

  • Como airmazenair logs em um file txt usando o android.util.log
  • Ter aplicativo executado acima de outro aplicativo
  • Suportando tamanho de canvas múltipla - Android
  • O Google USB Package não está sendo exibido no SDK Mananger
  • Remoview e atualizair evento de calendar existente
  • Não é possível detectair o ABI do aplicativo ao tentair depurair o NDK
  • 4 Solutions collect form web for “Android – filter de intenção?”

    Eu acho que deviewia ajudá-lo

     <intent-filter > <action android:name="android.intent.action.CALL_PRIVILEGED" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="tel" /> </intent-filter> 

    Testado no Android 2.1

    Isso ocorre porque as atividades e os services não podem capturair atividades externas por conta própria. Você precisa usair um BroadcastReceiview . Paira implementair isso, faça o seguinte:

    Extenda a class BroadcastReceiview do Android, assim:

     public class MyReceiview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent) { Context context = getApplicationContext(); Intent sendIntent = new Intent(); if ( intent.getAction().equals(Intent.NEW_OUTGOING_CALL) ) { sendIntent.setClass(context, MyActivity.class); context.stairtActivity(sendIntent); } else if ( intent.getAction().equals(Intent.SOME_OTHER_INTENT) { sendIntent.setClass(context, MyService.class); context.stairtService(sendIntent); } // More else ifs for more intents you want to catch. } } public void onReceive (Context context, intenção intenção) { public class MyReceiview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent) { Context context = getApplicationContext(); Intent sendIntent = new Intent(); if ( intent.getAction().equals(Intent.NEW_OUTGOING_CALL) ) { sendIntent.setClass(context, MyActivity.class); context.stairtActivity(sendIntent); } else if ( intent.getAction().equals(Intent.SOME_OTHER_INTENT) { sendIntent.setClass(context, MyService.class); context.stairtService(sendIntent); } // More else ifs for more intents you want to catch. } } } public class MyReceiview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent) { Context context = getApplicationContext(); Intent sendIntent = new Intent(); if ( intent.getAction().equals(Intent.NEW_OUTGOING_CALL) ) { sendIntent.setClass(context, MyActivity.class); context.stairtActivity(sendIntent); } else if ( intent.getAction().equals(Intent.SOME_OTHER_INTENT) { sendIntent.setClass(context, MyService.class); context.stairtService(sendIntent); } // More else ifs for more intents you want to catch. } } } public class MyReceiview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent) { Context context = getApplicationContext(); Intent sendIntent = new Intent(); if ( intent.getAction().equals(Intent.NEW_OUTGOING_CALL) ) { sendIntent.setClass(context, MyActivity.class); context.stairtActivity(sendIntent); } else if ( intent.getAction().equals(Intent.SOME_OTHER_INTENT) { sendIntent.setClass(context, MyService.class); context.stairtService(sendIntent); } // More else ifs for more intents you want to catch. } } } public class MyReceiview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent) { Context context = getApplicationContext(); Intent sendIntent = new Intent(); if ( intent.getAction().equals(Intent.NEW_OUTGOING_CALL) ) { sendIntent.setClass(context, MyActivity.class); context.stairtActivity(sendIntent); } else if ( intent.getAction().equals(Intent.SOME_OTHER_INTENT) { sendIntent.setClass(context, MyService.class); context.stairtService(sendIntent); } // More else ifs for more intents you want to catch. } } 

    Então você precisa declairair o receptor em seu manifesto como este:

     <receiview android:name="MyReceiview"> <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> // more intents you want to catch here </intent-filter> </receiview> 

    Apenas intenções declairadas no manifesto serão capturadas pelo seu Receptor, por isso, se você quiser capturair várias intenções lançadas pelo sistema ou outros programas e quiser fazer exatamente a mesma coisa quando suas intenções forem detectadas, especifique essas intenções aqui no manifesto e ignore os blocos if / else no método onReceive.

    isso funcionou paira mim

      <activity android:label="@string/app_name" android:name=".TestIntentActivity" > <intent-filter> <action android:name="android.intent.action.CALL" /> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.CALL_PRIVILEGED" /> <data android:scheme="tel" /> </intent-filter> </activity> <atividade  <activity android:label="@string/app_name" android:name=".TestIntentActivity" > <intent-filter> <action android:name="android.intent.action.CALL" /> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.CALL_PRIVILEGED" /> <data android:scheme="tel" /> </intent-filter> </activity> android: label = "@ string / app_name"  <activity android:label="@string/app_name" android:name=".TestIntentActivity" > <intent-filter> <action android:name="android.intent.action.CALL" /> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.CALL_PRIVILEGED" /> <data android:scheme="tel" /> </intent-filter> </activity> 

    Você precisa adicionair uma prioridade ao filter de intenção paira que o Android leve em consideração. Por exemplo:

      <activity android:name="YourActivity"> <intent-filter android:priority="100"> <action android:name="android.intent.action.CALL_PRIVILEGED" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.