2016-06-28 17 views
1

私はデモで電話デモを実装しています。私はautoLink = phoneを使ってtextviewへのリンクを生成しましたが、私の連絡先リストにこの番号が保存されていれば、乱数にリンクを生成します。autoLink電話は保存番号のために働く

私もclickable = trueを試しました。 Linkifyクラスも適用されますが、これはどちらも機能しません。 またautoLink = "all"を適用しても動作していないので、何が間違っているのか分かりません。私はまた、マニフェストの許可を設定します。私reciver番号は、この番号は私の連絡先リストに保存され罰金bcz作業txtviewここ

   <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" /> 

が、FromNumber:

  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ファイルのコードです:ここ

は私のコードですtxtviewはリンクやanythinigを設定していません。 bcz乱数。

代わりにダイヤラウィンドウを開く直接呼び出す方法を質問2.

。?どのような助けがappriciatedされるだろう..事前に多くのおかげで。

注意。この問題は解決されます。これが作業コードです。

答えて

1

あなたの連絡先にあるかどうかにかかわらず、番号を入力して電話番号として検出されるとは限りません。

一例

私は私の連絡先に1234567890を追加し、Androidは電話番号でもあるかのようにそれを考慮されていないため、電話番号としてそれを検出しません、それを有効に自動リンクと私のTextViewにテキストを追加する場合それをあなたの連絡先に保管します。

別の例

私は私のテキストに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> 

希望を追加します。

+0

私は適切な番号を追加していますが、bcz番号は発信から来ています。 –

+0

しかし、問題の番号は12桁のコードです。bczすべての発信呼び出しは、元の番号の前に91を置きます。 –

+0

はここに番号です.. 9188662xxxxx –

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); 
     } 
    }; 
関連する問題