Non so se molte persone hanno provato questo, ma sto provando a costruire un'app che richiede all'utente di toccare un link sull'sms che riceve e questo lancia l'app per Android. È possibile fare in Android? Se sì, come posso fare questo? So che questo può essere fatto in IOS. Qualsiasi suggerimento o aiuto sarà apprezzato. Grazie.Avviare l'app per Android quando si tocca un collegamento su SMS
risposta
In manifestate, a titolo di un'attività che si desidera gestire i dati in arrivo da un link cliccato in app di messaggistica, definire qualcosa di simile:
<activity android:name=".SomeActivityName" >
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="com.your_package.something" />
</intent-filter>
</activity>
Il android:scheme=""
qui è quello che farà in modo che l'attività reagire a tutti i dati con questo in esso:
<data android:scheme="com.your_package.something" />
nel SomeActivityName
, è possibile eseguire una che (nome utilizzato come illustrazione Naturalmente, potrete utilizzare il proprio :-).) ck come questo:
Uri data = getIntent().getData();
String strData = data.toString();
if (strScreenName.equals("com.your_package.something://")) {
// THIS IS OPTIONAL IN CASE YOU NEED TO VERIFY. THE ACTUAL USAGE IN MY APP IS BELOW THIS BLOCK
}
della mia app utilizzo simile:
Uri data = getIntent().getData();
strScreenName = data.toString()
.replaceAll("com.some_thing.profile://", "")
.replaceAll("@", "");
Io lo uso per gestire clic su twitter @nomeutente collegamenti all'interno mia app. Devo rimuovere lo com.some_thing.profile://
e lo @
per ottenere il nome utente per ulteriori elaborazioni. Il codice Manifest, è esattamente lo stesso (con solo il name
e scheme
modificato).
Aggiungi un intent-filter alla tua app che rileva i collegamenti che seguono il formato in cui vuoi che venga avviata la tua app.
Tuttavia, questo sarà un listener globale e qualsiasi collegamento che si adatti al formato anche al di fuori dell'applicazione SMS attiverà la tua app. Quindi, se l'utente tocca un link simile nel browser web, la tua app tenterà di rispondere ad esso.
Inoltre, se è disponibile un'altra app oltre la tua in grado di gestire questo collegamento, Android creerà un selettore che consente all'utente di selezionare qualsiasi app che desidera utilizzare. Non c'è nulla che tu possa fare a riguardo, tranne suggerire che l'utente faccia la tua app come il gestore predefinito per tali collegamenti.
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE"
<data android:scheme="https" android:host="${hostName}" android:pathPattern="/.*" />
</intent-filter>
Le risposte precedenti sono OK ma non dimenticare di specificare il modello.
definire anche il nome host all'interno Gradle di file come:
android {
defaultConfig {
manifestPlaceholders = [hostName:"subdomain.example.com"]
}
}
Maggiori informazioni su manifestPlaceholders
here.
ok quando ricevo un messaggio che dice (per esempio: myapp: // get/256298xxxx) Dovrebbe evidenziare la parte myapp: // get/256298xxxx sul testo. Ma non è così. Come dovrei affrontare questo problema? Come verrà lanciata l'app quando la parte myapp: // get/256298xxxx non viene evidenziata da sola come collegamento per premere sul testo – nishantvodoo
@nishan_vodoo: Ciò è dovuto al fatto che _myapp: // get/256298xxxx_ non è un URL valido per l'app SMS per analizzarla e mostrarla come collegamento. Nella migliore delle ipotesi, analizzerà la sequenza numerica come un numero di telefono. Dovrai inviare un URL valido nell'SMS. Dai uno sguardo ad un esempio specifico: http://stackoverflow.com/a/3865145/450534. –
Grazie ragazzi per aver dedicato del tempo per rispondere alla mia domanda. – nishantvodoo