问题是我不知道如何通过此链接“ my.app//id=819”进行深链接
我尝试了一些数据变体,但无法理解路径模式
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="my.app"
android:host="id"
android:pathPattern="=.*"/>
期望是午餐意图,并获取id的值
答案 0 :(得分:0)
使用<intent-filter>
,您可以指定活动应处理的网址。一旦系统检测到您的应用程序中的活动能够处理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();
....
}
}
答案 1 :(得分:0)
您的意思是类似my.app//host?id=819
,对吧?
您在my.app//host
周围构建了意图过滤器,不包含参数。
Add intent filters for incoming links:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="my.app"
android:host="host" />
</intent-filter>
然后在活动中,您可以解析参数Read data from incoming intents:
Intent intent = getIntent();
Uri data = intent.getData();
在data
中,您可以使用Uri#getQueryParameter()从819
中获取id
:
String id = data.getQueryParameter("id");