Purtroppo i caratteri jolly che possono essere utilizzati per il tag pathPattern sono molto limitate e ciò che si vuole è attualmente impossibile per pura xml.
Questo perché una volta accettato lo standard "/.*"
viene accettato tutto (che include le barre). E poiché non possiamo fornire tag di dati che NON devono essere accettati, l'unico modo è controllare i dati all'interno della tua attività. Ecco come realizzare ciò che si sono fino a:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri data = getIntent().getData();
Log.d("URI", "Received data: " + data);
String path = data.getPath();
// Match only path "/*" with an optional "/" in the end.
// * to skip forward, backward slashes and spaces
Pattern pattern = Pattern.compile("^/[^\\\\/\\s]+/?$");
Matcher matcher = pattern.matcher(path);
if (!matcher.find()) {
Log.e("URI", "Incorrect data received!");
finish();
return;
}
// After the check we can show the content and do normal stuff
setContentView(R.layout.activity_main);
// Do something when received path data is OK
}
attività all'interno del manifesto sarebbe simile a questa:
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"
android:host="example.com"
android:pathPattern="/.*"/>
</intent-filter>
</activity>
Se non si desidera la vostra attività per verificare se i dati sono corretti si vuole devi cambiare le tue esigenze.
Il problema è il '*' che è un carattere jolly per "tutto il resto dopo". Prova a rimuoverlo e controlla se funziona! – Leonardo
@LeonardoFerrari Sì, ma è necessario anche il carattere jolly per associare tutti i tipi di caratteri tra le due o una barra. – Mahoni
Mi dispiace se questo non aiuta, ma ecco un [regex che funziona per il tuo situtation] (http://regex101.com/r/rT5rZ5/1). Non so se questo aiuti perché non conosco Android. Spero che aiuti un po 'e buona fortuna! – skamazin