自动连接电话只适用于保存的号码



我正在实现电话呼叫演示,在我的演示中,我使用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);
        }
    };

最新更新