我正在实现电话呼叫演示,在我的演示中,我使用autoLink = phone生成链接到textview,但只有当我有这个号码保存在我的联系人列表时,它才能工作,我不能在随机数上生成链接。
我也试过clickable= true。也应用Linkify类,但这也不行。也应用了autoLink="所有"它也不起作用,我不知道什么是错的。我还在manifest中设置了权限
下面是我的代码: txtfromnumber = (TextView) findViewById(R.id.txtfromnumber);
int mask = Linkify.ALL;
Linkify.addLinks(txtfromnumber, mask);
txtfromname = (TextView) findViewById(R.id.txtfromname);
txtreceivernumber = (TextView) findViewById(R.id.txtreceivernumber);
int mask2 = Linkify.ALL;
txtreceivernumber.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Intent dialIntent = new Intent(Intent.ACTION_CALL,
Uri.parse("Tel:"+txtreceivernumber.getText().toString().trim()));
if (dialIntent.resolveActivity(context.getPackageManager()) != null) {
dialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
dialIntent.setPackage("com.android.phone");
}else {
dialIntent.setPackage("com.android.server.telecom");
}
startActivity(dialIntent);
}
}
});
txtfromnumber.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Intent dialIntent = new Intent(Intent.ACTION_DIAL,
Uri.parse("+"+txtfromnumber.getText().toString().trim()));
if (dialIntent.resolveActivity(context.getPackageManager()) != null) {
dialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
dialIntent.setPackage("com.android.phone");
}else {
dialIntent.setPackage("com.android.server.telecom");
}
startActivity(dialIntent);
}
}
});
下面是我的XML文件代码:
<TextView
android:clickable="true"
android:autoLink="all"
android:id="@+id/txtreceivernumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:textSize="17sp" />
<TextView
android:clickable="true"
android:autoLink="all"
android:id="@+id/txtreceivernumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:textSize="17sp" />
这里我的收件人号码txtview工作良好,因为这个号码保存在我的联系人列表,但FromNumber txtview没有设置任何链接或任何东西。BCZ是随机数
2 .问题
如何直接呼叫而不是打开拨号窗口?任何帮助都将不胜感激。提前感谢。
。这个问题解决了。这是工作代码。
你不能随便输入一个号码,就认为不管你有没有联系方式,它都会被检测为电话号码。
一个例子
如果我添加1234567890在我的联系人和添加文本在我的textview与自动链接启用它不会检测到它作为电话号码,因为android不认为它是一个电话号码,即使你存储在你的联系人。
另一个示例
我在我的文本中传递9854856589,然后即使它不在我的联系人中,它也会将其检测为电话号码。
因此,如果可能的话,请添加适当的电话号码或最接近的号码,以便android检测到它是有效的电话号码,它不一定在您的联系方式。
问题2:
String uri = "tel:" + yourNumber ;
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(intent);
<<p> 添加许可/em> <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
尝试使用SpannableString和ClickableSpan!
String tel = textview.getText().toString();
SpannableString sSpan = new SpannableString(tel);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
//intent dial or call
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};