homescreen Android erro de permissão de atalho
-
03-07-2019 - |
Pergunta
No meu programa adiciona um atalho para a tela. Eu obter o ícone sobre a multa tela, mas quando eu toque nele, eu recebo:
03-01 20:00:29.410: ERROR/AndroidRuntime(796): java.lang.SecurityException: Permission Denial: starting Intent { data=http://www.example.com/ flags=0x14000000 comp={com.isaacwaller.example/com.isaacwaller.example.ExampleCut} } from ProcessRecord{435c7398 796:android.process.acore/10005} (pid=796, uid=10005) requires null
Você sabe o problema? Obrigado,
Isaac
Solução 2
Descobri-lo, adicionado este sob tag <activity>
de atividade:
<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
</intent-filter>
Outras dicas
Eu tinha algo como isso acontecer quando eu tinha acidentalmente duplicado a tag de atividade para uma das minhas atividades no meu manifesto. Eu tinha algo como este em minha seção do aplicativo.
<activity android:name=".ConventionHome" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="ConventionHome"></activity>
Quando eu removi o segundo tag de atividade, as coisas começaram a trabalhar normalmente.
Algo como isto deve funcionar:
<intent-filter>
<action android:name="com.example.Project.Action"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
dentro da declaração Atividade no manifesto.
Eu corri para este problema também, e descobriu-se que era porque a atividade não foi exposto a outros processos. Eu tive que adicionar o android: exportados = "true" atributo para a marca de atividade no meu manifesto.
http://developer.android.com/guide /topics/manifest/activity-element.html#exported para mais informações.
Eu não executar para esse pessoalmente, mas eu fiz algumas pesquisas e descobrimos o seguinte.
Aparentemente o que está tentando invocar o seu aplicativo ou se o seu aplicativo tem uma chamada para criar uma intenção e iniciar uma atividade de alguma intenção UID não é o mesmo.
Em ActivityManagerServer.java existem abaixo julgamento nele.
int checkComponentPermission(String permission, int pid, int uid, int reqUid)
// If the target requires a specific UID, always fail for others.
if (reqUid >= 0 && uid != reqUid) {
return PackageManager.PERMISSION_DENIED;
}
Vou fazer alguns testes sobre isso e ver se eu posso reproduzir isso em um aplicativo de teste e fornecer qualquer feedback adicional.
Certifique-se de que você está tentando somente invocar atividades expostas publicamente através de quaisquer intenções.