插入链接以在字符串资源中发送Intent

时间:2019-01-25 19:47:12

标签: java android

我想在Android应用程序的字符串资源项中添加链接。

我看到可以插入这样的链接

<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>

但是我不想启动网站,而是想发送一个Intent来将用户带到他的手机设置。

是否可以有这样的链接?

2 个答案:

答案 0 :(得分:1)

您可以使用DeepLinks处理特定的URL。为此,您应该引入Activity作为特定模式URL的处理程序。因此,当用户单击特定的模式链接时,可以选择您的Activity作为其处理程序,然后可以打开电话设置。这是此想法的实现:

manifest.xml

<activity android:name=".MyTransientActivity">

    <intent-filter>

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

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <!-- Accepts URIs that begin with "http://somesite.com" -->
        <data android:host="somesite.com" />
        <data android:scheme="http" />

    </intent-filter>

</activity>

MyTransientActivity.java

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

public class MyTransientActivity extends AppCompatActivity {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getIntent() != null) {
            String action = getIntent().getAction();
            if (action != null && action.equals(Intent.ACTION_VIEW)) {
                Intent settingsIntent = new Intent(android.provider.Settings.ACTION_SETTINGS);
                settingsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                getApplicationContext().startActivity(settingsIntent);
            }
        }
        finish();
    }

}

测试:

TextView textview = findViewById(R.id.textView);
textview.setText(getString(R.string.my_link));
Linkify.addLinks(textview, Linkify.WEB_URLS);
textview.setMovementMethod(LinkMovementMethod.getInstance());

答案 1 :(得分:0)

对于我所知道的,您不能像这样发送,应该这样添加:

<string name="my_link">http://somesite.com/</string>

要发送意图,您必须像这样发送它:

String url = this.getResources().getString(R.string.my_link);
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(url));
        startActivity(i);

这将通过您发送的链接打开您的android浏览器。 我希望这是有用的。 :)