Как сделать переход на новое активити?

Рейтинг: -2Ответов: 1Опубликовано: 10.01.2015

Нашел в недрах гугла какой-то пост, там был способ создания ссылки для текста. Вообще написал, все работает, когда нажимаю на текст, мне надо открыть 2 активити. Как я понял, надо что-то прописать в фильтре в Манифесте, подскажите, что написать там.

Ответы

▲ 0Принят

Вопрос всё ещё не до конца ясен в виду отсутствия кода.

Можно так попробовать:

В манифесте:

<activity
        android:name=".Activity"
        android:label="@string/hello_world"
        <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="site.ru" />
            <data android:scheme="http" />

            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
    </activity>

В этом случае, при наличии ссылки на "http://site.ru" в TextView должен открыться диалог выбора в чём открыть, в коем будет и приложение с активити, коя описана выше.

Проще же, на мой взгляд, отлавливать клик по ссылке и уже в обработчике делать что угодно, отталкиваясь от ссылки:

CharSequence sequence = Html.fromHtml(html);
    SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
    URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class);
    for (URLSpan span : urls)
    {
        makeLinkClickable(strBuilder, span);
    }
YOURS_TEXT_VIEW.setText(strBuilder);

protected void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span)
{
    int start = strBuilder.getSpanStart(span);
    int end = strBuilder.getSpanEnd(span);
    int flags = strBuilder.getSpanFlags(span);
    ClickableSpan clickable = new ClickableSpan()
    {
        @Override
        public void onClick(View view)
        {

             if (span.getURL().equals("http://site.ru")
             {
                             context.startActivity(new Intent(context, Activity.class);
                         }
                    }
            }
strBuilder.setSpan(clickable, start, end, flags);
    strBuilder.removeSpan(span);
}

UPD 0:

По ссылке @gcoder написан ещё такой вариант. Простейший:

1) В манифесте:

<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="com.package.name" />  
</intent-filter>

В этом случае эта активити будет ловить нажатия на все ссылки, в коих вместо "http://" будет "com.package.name://".

Соответственно, если в вашем TextView будет ссылка вида "com.package.name://что-угодно/ещё-что-нибудь/" то при её нажатии будет открыта активити.