我从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
}
答案 0 :(得分:1)
您确定自己有权拨打电话吗?
您需要CALL_PHONE权限。确保在AndroidManifest.xml中有这个:
<uses-permission android:name="android.permission.CALL_PHONE" />
当您尝试拨打mobileNo
时,我的另一个猜测是mobileNo.trim()
为空。
唯一可以确定的方法是查看日志。您可能需要将Android Studio上的logcat视图设置更改为“详细”。
或者,您可以使用adb logcat
查看终端中的日志。在复制力关闭时观察日志,你应该能够找到引起它的异常。