С помощью <intent-filter>
вы указываете URL, которые ваша деятельность должна обрабатывать. Как только система обнаруживает, что действие в вашем приложении может обрабатывать URL, она открывает это действие, и вы можете извлечь данные в объекте Extra
или .getData()
.
В вашем файле AndroidManifest.xml:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter android:label="My app preview">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="www.myapp.com/api/id"
android:pathPrefix="/api/" <!-- optional, you can skip this field if your url doesn't have prefix-->
android:scheme="http"/>
<data
android:host="www.myapp.com/api/id"
android:pathPrefix="/api/" <!-- optional, you can skip this field -->
android:scheme="https"/>
</intent-filter>
</activity>
В вашей деятельности:
public class MainActivity extends Activity {
Bundle bundle = getIntent.getExtras();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handleExtra(getIntent());
}
// If your app is in opened in background and you attempt to open an url, it
// will call this function instead of onCreate()
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
handleExtra(getIntent());
}
private void handleExtra(Intent intent) {
String myID = intent.getData().getLastPathSegment();
....
}
}