我想在Android应用程序的字符串资源项中添加链接。
我看到可以插入这样的链接
<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>
但是我不想启动网站,而是想发送一个Intent来将用户带到他的手机设置。
是否可以有这样的链接?
答案 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浏览器。 我希望这是有用的。 :)