【问题标题】:How to make a call on button click in a ListView?如何在 ListView 中单击按钮进行调用?
【发布时间】:2017-04-23 12:05:52
【问题描述】:

我在 CustomAdapter 类的 getView() 方法中完成了以下代码。如果我尝试简单地显示 Toast,则会出现 Toast,但如果我执行以下代码进行调用,应用程序会崩溃。我在这里做错了什么?

                call.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent callIntent = new Intent(Intent.ACTION_CALL);
                    callIntent.setData(Uri.parse("tel:" + phone.getText().toString()));
                    context.startActivity(callIntent);
                }
            });

堆栈跟踪显示此错误:

AndroidRuntime: FATAL EXCEPTION: main Process: com.example.hammad.contactme, PID: 26713 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag.

【问题讨论】:

  • 如果您是 Android 6+,您是否获得了在 Manifest 和 Run time 中拨打电话的正确权限?
  • 已添加权限。它不起作用。
  • 它也不适用于 ACTION_DIAL。
  • 您需要查看the stack trace 以确定崩溃的确切原因。
  • 从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。

标签: android listview custom-adapter


【解决方案1】:

尝试在AndroidManifest中添加正确的通话权限

<uses-permission android:name="android.permission.CALL_PHONE" />

如果您在 android 6.0 或更高版本上运行,您还应该在运行时获得此权限

getting runtime permission

【讨论】:

  • 运行时和清单?!你能添加你的错误堆栈跟踪吗?
  • 你能添加你的堆栈跟踪吗?
  • 这是个问题吗?
  • E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.hammad.contactme, PID: 26713 android.util.AndroidRuntimeException: 从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?
  • myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 添加到您的意图中,看看是否有帮助
猜你喜欢
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 2013-12-24
相关资源
最近更新 更多