Tôi không tin rằng bạn phải sử dụng getInvitation(), Cá nhân tôi chỉ ghi đè 'onNewIntent' như vậy:
@Override
protected void onNewIntent(final Intent intent) {
super.onNewIntent(intent);
if (intent.getAction().equals("android.intent.action.VIEW")) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
handleItemId(getIdFromIntent(intent));
}
}, 50);
}
}
tôi thiết lập một handler với postDelayed để cho phép hoạt động để set- lên. Bạn không phải làm vậy.
Bạn phải có một bộ lọc ý định thiết lập như thế này
<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:host="yourwebsite.com" android:scheme="http"/>
<data android:host="yourwebsite.com" android:scheme="https"/>
<data android:host="anything" android:scheme="yourappname"/>
</intent-filter>
Sau đó url động https://*****.app.goo.gl/?link=http://yourwebsite.com&al=yourappname://anything/method&apn=com.yourwebsite.yourappname
nên mở trang web của bạn trên máy tính để bàn iOS vv, và các ứng dụng hoặc playstore trên Android.
Để nhận các liên kết sâu từ các tìm kiếm của Google tách khỏi các liên kết trên trang web của bạn thành các đoạn trong ứng dụng của bạn, bạn phải xác định chúng. Các phương thức handleItemId và getIdFromIntent của tôi được định nghĩa như sau.
public boolean handleItemId(int id) {
if (id == R.id.nav_home) {
fragment = new FragmentHome();
} else if (id == R.id.nav_favorites) {
fragment = new FragmentFavoritesPager();
} else if (id == R.id.nav_contact) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:[email protected]")); // only email apps should handle this
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, "No email app is installed", Toast.LENGTH_LONG).show();
}
return false;
} else if (id == R.id.nav_settings) {
fragment = new FragmentSettings();
} else {
return false;
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out)
.replace(R.id.content_main, fragment)
.commitAllowingStateLoss();
}
},400);
return true;
}
Và getIdFromIntent
private int getIdFromIntent(Intent intent) {
int id = R.id.nav_home;
if (intent.getData() != null) {
List<String> segments = intent.getData().getPathSegments();
if (segments.size() > 0) {
switch (segments.get(0)) {
case "favorites":
id = R.id.nav_favorites;
break;
case "contact":
id = R.id.nav_contact;
break;
case "settings":
id = R.id.nav_settings;
break;
}
}
}
return id;
}
Nguồn
2016-10-11 21:31:48
Are ** liên kết hồi ** và ** dữ liệu thanh toán bù trừ ** chức năng duy nhất của 'getInvitation()'? Tôi đã tự quản lý điều này. –
Đó là những gì liên kết đề cập đến. Nếu bạn có thể tự mình xử lý thì tôi nghĩ bạn nên đi và bỏ qua chức năng này. – random