我正在实施手机通话演示,在我的演示中我使用autoLink = phone生成了textview的链接,但是当我将这个号码保存在我的联系人列表上时它唯一的工作,我无法生成随机数链接..
我也尝试过clickable = true。并且还应用Linkify类,但这也不起作用。 并且还应用了autoLink =“all”它也没有用,我不知道出了什么问题。我还在清单中设置了权限。
这是我的代码:
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" />
这里我的reciver号码txtview工作正常bcz这个号码保存在我的联系人列表中,但FromNumber txtview没有设置任何链接或anythinig。 bcz是随机数。
问题2。
如何直接呼叫而不是打开拨号窗口。任何帮助都会得到满足。非常感谢提前。
请注意。这个问题解决了。这是工作代码。
答案 0 :(得分:1)
您不能只输入任何数字,并认为它会被检测为电话号码,无论它是否在您的联系人中。
一个例子
如果我在我的联系人中添加1234567890并在我的textview中使用自动链接启用添加文本,它将不会将其检测为电话号码,因为即使您将其存储在联系人中,Android也不会将其视为电话号码。
另一个例子
我在文本中传递了9854856589,然后它会将其检测为电话号码,即使它不在我的联系人中。
因此,如果可能请添加正确的电话号码或最接近号码,以便安卓将其检测为有效的电话号码,并且不一定在您的联系中。
问题2:
String uri = "tel:" + yourNumber ;
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(intent);
添加权限
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
希望这会有所帮助。
答案 1 :(得分:0)
尝试使用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);
}
};