Não estou conseguindo definir como default um Browser

Leomar_NS

Member
Licensed User
Longtime User
Fiz um aplicativo para assistir filmes via internet, porém eu gostaria de fixar que apenas um browser pudesse ser usado. Seguindo algumas orientações que vi postadas pelo Erel, eu consegui fazer o básico, ou seja, o usuário seleciona o browser depois de selecionar o filme que está num ListView.
Assim:
Sub ListView1_ItemClick(Position As Int, Value As Object)
Dim sFilme As String
Dim p As PhoneIntents
Dim i As Int

*Dim is As Intent

sFilme = filmes(Position) ' sFilme recebe a URL que está numa matriz

* in.Initialize(in.ACTION_VIEW, sFilme)
* in.SetComponent("com.xmtv.watch.live.stream"/.XMTVPlayer")
*StartActivity(in)

'sem as quatro linhas que estão com asterisco, fica assim e funciona para o usuário selecionar o Browser
StartActivity(p.Browser(sFilme)
End Sub

Gostaria se possível, da ajuda de quem esteja disposto a isso.
Desde já fico muito agradecido por qualquer ajuda.
 

MaxRosa

Member
Licensed User
Longtime User
Oi, Leomar.

Vou tentar ajudar. A linha p.Openbrowser(sFilme) vai abrir o navegador padrão, sem problemas. Já o outro código tenta abrir o link num app específico, o XMTV Player, e só vai funcionar se o usuário tiver o aplicativo instalado e se o "Intent" estiver definido corretamente. Nesse caso o filme deve abrir dentro do app, não no navegador.

Acredito que a solução que esteja querendo se encontre neste post.

Você também pode usar um Web View, se preferir e abrir a página dentro do seu app.
 

Leomar_NS

Member
Licensed User
Longtime User
Ok MaxRosa, muito grato pela sua intenção. Talvez eu não tenha conseguido me expressar corretamente.
A parte se se refere a p.Browser, eu tá havia testado e não é o que eu quero.
Usando apenas as linhas:

in.Initialize(in.ACTION_View, sFilme)
in.SetComponent("com.xmtv.watch.live.stream"/.XMTV Player")
StartActivity(in)

quando uso somente elas, está dando erro: ActivityNotFoundException: Unable to find explicit activity class (com.xmtvplayer,watch.live,streams/com.xmtvplayer.watch.live.streams.XMTV Player) have you declared this activity in your Android Manifest.xml ?

por outro lado quando modifico a segunda linha para:

in.SetComponent("xmtv player")

o aplicativo funciona, mas solicita que o usuario selecione o player, isto é, funciona como o p.Browser.
Alguma idéia ? A teoria é uma coisa , mas na prática está me faltando conhecimento para solucionar isto.
Eu quero que o XMTV Player seja o Browser padrão ( claro que para isso deverá estar instalado no smatphone do usuário).
 

MaxRosa

Member
Licensed User
Longtime User
Pelo que entendi, o problema é que não está encontrando o Intent correto. Ou seja, o Intent principal do XMTV Player colocado em in.SetComponent("com.xmtv.watch.live.stream"/.XMTV Player") não está correto. Quanto ao fato do app funcionar quando muda o código para in.SetComponent("xmtv player") é porque ele não achou o Intent e então solicita que o usuário escolha qual o app deve ser usado.

Acredito que com essa função funcione:

Sub FindDefaultApp(InAsIntent) AsString
Dim r AsReflector
r.Target = r.GetContext
Dim pm As Object
pm = r.RunMethod("getPackageManager")
r.Target = pm
Dim mInfo As Object
mInfo = r.RunMethod4("resolveActivity", ArrayAs Object(In, 0), _ArrayAsString("android.content.Intent", "java.lang.int"))
If mInfo = NullThenReturn""'no activity found r.Target = mInfo
r.Target = r.GetField("activityInfo")
r.Target = r.GetField("applicationInfo")
Return r.GetField("packageName")
End Sub

Dim in As Intent
in.Initialize(in.ACTION_VIEW, sFilme)
in.SetComponent("com.xmtv.watch.live.stream"/.XMTV Player")
Log(FindDefaultApp(in))
StartActivity(in)
 
Top