在Android中发送ACTION_CALL意图,包含哈希#标志

我遇到了散列符号被截断的问题。 有人知道解决scheme吗? 使用unicode或%23不适用于我的情况。 现在拨打的号码是* 101

String uri = "tel:" + "*101#"; //String uri = "tel:" + "*101\u0023"; Intent intent; intent = new Intent(Intent.ACTION_CALL, Uri.parse(uri)); 

  • 注册成为自定义文件types的默认应用程序
  • 自定义对象是按值传递还是在片段和活动中由引用传递?
  • 清除较旧SDK上的完整Android活动堆栈(缺少FLAG_ACTIVITY_CLEAR_TASK)
  • SMS_RECEIVED不适用于冰淇淋三明治?
  • 相机或图库意图会破坏某些设备上的旧活动
  • android解锁屏幕的意图?
  • 如何知道在Intent.ACTION_SEND中select了哪个意图?
  • 在Android中使用MediaStore.ACTION_IMAGE_CAPTURE意图捕获图像
  • find了一个解决scheme:String encodedHash = Uri.encode(“#”); 这个伎俩…

    我通过replace%23中的#find了解决此问题的解决scheme

     String uri = "tel:" + "*133%23"; Intent intent; intent = new Intent(Intent.ACTION_CALL, Uri.parse(uri)); 

    这会更容易;

     String no = textview.getText().toString(); if(no.contains("#")){ no = no.replace("#","%23"); } startActivity(new Intent(Intent.ACTION_CALL) .setData(Uri.parse("tel:" no))); 

    一个解决scheme将是:

      String number = "*123#"; number = number.replace("*", Uri.encode("*")).replace("#",Uri.encode("#")); Intent mIntent = new Intent(Intent.ACTION_CALL); Uri data = Uri.parse("tel:" + number); mIntent.setData(data); startActivity(mIntent);