私のアプリにはレストランがリストされた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);
}
});
}
事前に感謝
Googleの "実行時の許可" –