我有一个问题,当我点击同时包含电话号码的文字视图时,我想拨打一个电话。但是当我单击文本视图时,它会返回错误:
12-22 10:32:36.703: ERROR/AndroidRuntime(399): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=4564646546 flg=0x10000000 }
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.app.Activity.startActivityFromChild(Activity.java:3057)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.app.Activity.startActivityForResult(Activity.java:2837)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.app.Activity.startActivity(Activity.java:2923)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at com.shipface.profile.Profile$1.onClick(Profile.java:66)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.view.View.performClick(View.java:2408)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.view.View$PerformClick.run(View.java:8816)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.os.Handler.handleCallback(Handler.java:587)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.os.Handler.dispatchMessage(Handler.java:92)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.os.Looper.loop(Looper.java:123)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at java.lang.reflect.Method.invokeNative(Native Method)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at java.lang.reflect.Method.invoke(Method.java:521)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-22 10:32:36.703: ERROR/AndroidRuntime(399): at dalvik.system.NativeStart.main(Native Method)
我不知道如何解决这个问题,请为我提出正确的解决方案。
代码:
tv_phone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String phone_no= tv_phone.getText().toString().replaceAll("-", "");
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse(phone_no));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(callIntent);
}
});
我还在我们的清单文件中获得了关于CALL的许可。
答案 0 :(得分:84)
将此属性添加到XML布局文件中的textview组件,如下所示:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="phone"
android:text="123 123 1234" />
答案 1 :(得分:18)
这项工作对我来说:)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="phone"
android:background="#ADD8E6"
android:text="555-468-0602" />
答案 2 :(得分:12)
将其更改为:callIntent.setData(Uri.parse("tel:"+phone_no));
我没有添加:callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
但它为我工作
答案 3 :(得分:2)
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class CustomCellActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button Phone = (Button) findViewById(R.id.button1);
Phone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent sIntent = new Intent(Intent.ACTION_CALL, Uri
.parse("tel:12345"));
sIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(sIntent);
}
});
此代码适用于我。试试吧。
答案 4 :(得分:0)
添加权限以调用AndroidManifest.xml文件。
<uses-permission android:name="android.permission.CALL_PHONE"/>
在您的layout.xml文件的textview中
<TextView
android:clickable="true"
android:autoLink="phone"
...
...
.../>
在您的活动课中。添加了运行时权限检查。
if (Build.VERSION.SDK_INT > 22) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MoreProgramDetailActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 101);
return;
}
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:+" + phoneTV.getText().toString().trim()));
startActivity(callIntent);
} else {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:+" + phoneTV.getText().toString().trim()));
startActivity(callIntent);
}
答案 5 :(得分:-1)
TextVIew dialers=(TextView)this.findViewById(R.id.dialer);
dialers.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
launchDialer(dialers.getText().toString());
}
});