Estou usando o código a seguir para fazer uma chamada no Android, mas está me dando uma exceção de segurança, por favor ajude.
posted_by = "111-333-222-4";
String uri = "tel:" + posted_by.trim() ;
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(intent);
permissões
<uses-permission android:name="android.permission.CALL_PHONE" />
Exceção
11-25 14:47:01.661: ERROR/AndroidRuntime(302): Uncaught handler: thread main exiting due to uncaught exception
11-25 14:47:01.681: ERROR/AndroidRuntime(302): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:111-333-222-4 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{43d32508 302:com.Finditnear/10026} (pid=302, uid=10026) requires android.permission.CALL_PHONE
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.os.Parcel.readException(Parcel.java:1218)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.os.Parcel.readException(Parcel.java:1206)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1214)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.app.Activity.startActivityForResult(Activity.java:2749)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.app.Activity.startActivity(Activity.java:2855)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at com.Finditnear.PostDetail$2$1$1$1.onClick(PostDetail.java:604)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:884)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.widget.ListView.performItemClick(ListView.java:3285)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
Esta demonstração será útil para você ...
No botão de chamada, clique em:
Permissão no manifesto:
fonte
Opção mais elegante:
fonte
Use a ação ACTION_DIAL em sua intenção, assim você não precisará de permissão. O motivo pelo qual você precisa da permissão com ACTION_CALL é fazer uma ligação sem nenhuma ação do usuário.
fonte
Tudo está bem.
Acabei de colocar a marca de permissão de chamada antes da marca do aplicativo no arquivo de manifesto
e agora tudo está funcionando bem.
fonte
NOTA IMPORTANTE:
Se você usar,
Intent.ACTION_CALL
deverá adicionarCALL_PHONE
permissão.Tudo bem apenas se você não quiser que o seu aplicativo seja exibido no Google Play para tablets que não usam cartão SIM ou que não têm GSM.
EM SUA ATIVIDADE:
MANIFESTO:
Portanto, se esse recurso não for crítico para o seu aplicativo, tente não adicionar
CALL_PHONE
permissões.OUTRA SOLUÇÃO:
É mostrar ao aplicativo Telefone o número escrito na tela, para que o usuário precise apenas clicar no botão de chamada:
Nenhuma permissão necessária para isso.
fonte
Apenas o oneliner simples, sem a necessidade de permissões adicionais:
fonte
use este código completo
fonte
Solicitar permissão no manifesto
Para chamar use este código
fonte
Permissão no AndroidManifest.xml
Código completo:
fonte
Permissões:
Intenção:
fonte
Você também pode usar isso:
fonte
Para fazer uma atividade de chamada usando intenções, você deve solicitar as permissões adequadas.
Para isso, você inclui permissões no arquivo AndroidManifest.xml.
Em seguida, inclua o seguinte código em sua atividade
fonte
Para chamadas do discador (não é necessária permissão):
Para chamada direta do aplicativo (é necessária permissão):
Permissão:
fonte
Para evitar isso - pode-se usar a GUI para inserir permissões. O Eclipse cuida de onde inserir a tag de permissão e, com mais frequência, não está correto
fonte
fonte
No Android, para determinadas funcionalidades, você precisa adicionar a permissão ao arquivo de manifesto.
6.Salve o arquivo de manifesto e, em seguida, execute seu projeto. Seu projeto agora deve ser executado conforme o esperado.
fonte
^ A resposta está na saída de exceção "
requires android.permission.CALL_PHONE
" :)fonte
fonte
fonte