我的應用程序有一個RecyclerView列表中的餐廳,其中每個餐廳都有一個按鈕來撥打電話。從ViewHolder請求電話權限
該電話適用於除23之外的所有API。問題是應用程序必須請求許可才能撥打電話,但它無法從非活動類中執行此操作。
我試過傳遞上下文,但它沒有爲我工作。
以下是將餐廳綁定到CardView的方法。
public void bind(final Restaurant restaurant) {
name.setText(restaurant.getName());
address.setText(restaurant.getAddress());
city.setText(String.format("%05d %s (%s)", restaurant.getZip(), restaurant.getCity(), restaurant.getRegion()));
switch (restaurant.getCountry()) {
case "France":
country.setText(R.string.france);
break;
case "Spain":
country.setText(R.string.spain);
break;
case "Poland":
country.setText(R.string.poland);
break;
case "Portugal":
country.setText(R.string.portugal);
}
latitude = restaurant.getLatitude();
longitude = restaurant.getLongitude();
phoneCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+restaurant.getPhone()));
//
// Here I should request the permissions
//
v.getContext().startActivity(intent);
}
});
navigation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri gmmIntentUri = Uri.parse("google.navigation:q=" + latitude + "," + longitude);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
v.getContext().startActivity(mapIntent);
}
});
}
任何解決方案?在此先感謝
在谷歌 「運行時允許」 –