Я хочу получить доступ к глубокой ссылке в телеграмме на мое собственное приложение, установленное на моем устройстве Android.
Я создал регистрацию своего приложения (моя активность, которая должна быть открыта), похоже,показано ниже:
[Activity(Label = "@string/app_name", MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true, ScreenOrientation = ScreenOrientation.Portrait)]
[IntentFilter(new[] { Intent.ActionView }, Categories = new[] {Intent.ActionView,Intent.CategoryDefault,Intent.CategoryBrowsable}, DataScheme = "todolist", DataHost = "my_code_is_here")]
public class SplashScreen : MvxSplashScreenActivity
{
public SplashScreen()
: base(Resource.Layout.SplashScreen)
{
}
}
После этого я хотел убедиться, что все сделал правильно.Я создал файл HTML, его код показан ниже:
<a href="todolist://my_code_is_here">This is an example</a>
Я открыл этот файл на своем устройстве Android с помощью браузера Google Chrome.Одна ссылка была показана, когда я нажал на нее, мое приложение открылось!Все заработало!
После этого внутри моей программы я создал метод для обмена текстовыми сообщениями в Telegram, код которого представлен ниже:
private string _shareText = "Hi, this is my message.";
private readonly string _dataMIMEType = "text/plain";
private readonly string _titleOfChooserIntent = "Share with";
private readonly string _appName = "org.telegram.messenger";
private Intent _actionSendIntent;
private Intent _chooserIntent;
public ImageButton TelegramShare;
public MyClass()
{
TelegramShare = FindViewById<ImageButton>(Resource.Id.image_button_share);
TelegramShare.Click += ShareEmailToTelegram;
}
private void ShareEmailToTelegram(object sender, EventArgs e)
{
if (IsAppInstalled(_appName))//check whether Telegram is installed
{
_actionSendIntent = new Intent(Intent.ActionSend);
_actionSendIntent.SetType(_dataMIMEType);
_actionSendIntent.SetPackage(_appName);
if (_actionSendIntent != null)
{
_actionSendIntent.PutExtra(Intent.ExtraText, _shareText);
_chooserIntent = Intent.CreateChooser(_actionSendIntent, _titleOfChooserIntent);
Application.Context.StartActivity(_chooserIntent);
return;
}
}
else
{
Toast.MakeText(Application.Context, "Telegram is not installed", ToastLength.Short).Show();
}
}
И все заработало, нажав на кнопкуКнопка, сообщение отправляется в Telegram.
Я вставляю ссылку на Google вместо текста:
_shareText = "https://www.google.com";
После отправки его в Telegram, это была ссылка, и когда я нажал на нее, Google.com открыт.Но когда я вставляю ссылку на свое приложение вместо текста:
_shareText = "todolist://my_code_is_here";
Затем в Telegram отправлялся только текст, который не был ссылкой!
Я пытался сделать что-то подобное:
if (_actionSendIntent != null)
{
var uri = new Uri("todolist://my_code_is_here");
_actionSendIntent.PutExtra(Intent.ExtraText, uri);
_chooserIntent = Intent.CreateChooser(_actionSendIntent, _titleOfChooserIntent);
Application.Context.StartActivity(_chooserIntent);
return;
}
И вот так:
if (_actionSendIntent != null)
{
string s = "<a href=\"" + "todolist://my_code_is_here\"" + ">This is an example</a>";
_actionSendIntent.PutExtra(Intent.ExtraText, Html.FromHtml(s));
_chooserIntent = Intent.CreateChooser(_actionSendIntent, _titleOfChooserIntent);
Application.Context.StartActivity(_chooserIntent);
return;
}
Результат был тот же, это была не ссылка, а просто текст!
Пожалуйста, кто-то, помогитемне найти ответ!
Заранее спасибо!