如何从recyclerview持有者数据传递数据到手机应用程序拨号器是从firebase

时间:2017-08-01 15:44:49

标签: android firebase android-intent firebase-realtime-database android-recyclerview

我从firebase数据库获取数据进行操作。

viewHolder.imageButton.setOnClickListener打开手机应用并显示来自model.getPhone()的电话号码; 并在电话拨号器中显示它以优先用户打电话或不打电话。 当我点击imageButton并且我无法在android studio中获得崩溃日志时,应用程序崩溃。

 @Override
            protected void populateViewHolder(MovieViewHolder viewHolder, final Movie model, final int position) {
                if (tvNoMovies.getVisibility() == View.VISIBLE) {
                    tvNoMovies.setVisibility(View.GONE);
                }
                viewHolder.tvMovieName.setText(model.getMovieName());
                viewHolder.address.setText(model.getAddress());
                viewHolder.phone.setText(model.getPhone());
                viewHolder.lit.setText(model.getLit());
                viewHolder.lon.setText(model.getLon());
                Picasso.with(MainActivity.this).load(model.getMoviePoster()).into(viewHolder.ivMoviePoster);
                viewHolder.ivMoviePoster.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
                        intent.putExtra("latitude", model.getLit());
                        intent.putExtra("longitude", model.getLon());
                        intent.putExtra("name", model.getMovieName());


                        startActivity(intent);

                    }
                });
                viewHolder.tvMovieName.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
                        intent.putExtra("latitude", model.getLit());
                        intent.putExtra("longitude", model.getLon());
                        intent.putExtra("name", model.getMovieName());


                        startActivity(intent);

                    }
                });
                viewHolder.imageButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                    String mobileNo = model.getPhone();
                    String uri = "tel:" + mobileNo.trim();
                    Intent intent = new Intent(Intent.ACTION_CALL);
                    intent.setData(Uri.parse(uri));
                    startActivity(intent);
                    }
                });



// all your stuff

            }

1 个答案:

答案 0 :(得分:1)

您确定自己有权拨打电话吗?

您需要CALL_PHONE权限。确保在AndroidManifest.xml中有这个:

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

当您尝试拨打mobileNo时,我的另一个猜测是mobileNo.trim()为空。

唯一可以确定的方法是查看日志。您可能需要将Android Studio上的logcat视图设置更改为“详细”。

或者,您可以使用adb logcat查看终端中的日志。在复制力关闭时观察日志,你应该能够找到引起它的异常。