问题描述: 在双卡手机上,使用Android的Phone selector (HintRequest)来显示号码选择器,但是只显示一个号码,而不是两个号码。
解决方法: 在双卡手机上,Phone selector (HintRequest)默认只显示一个号码。要显示两个号码,可以使用SubscriptionManager的API来获取所有的SIM卡信息,并手动创建一个号码选择器。
以下是一个示例代码,演示如何获取所有的SIM卡信息,并创建一个自定义的号码选择器:
import android.content.Context;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class DualSimPhoneNumberSelector {
private Context mContext;
public DualSimPhoneNumberSelector(Context context) {
mContext = context;
}
public void showPhoneNumberSelector() {
List subInfoList = SubscriptionManager.from(mContext).getActiveSubscriptionInfoList();
List phoneNumberList = new ArrayList<>();
for (SubscriptionInfo subscriptionInfo : subInfoList) {
phoneNumberList.add(subscriptionInfo.getNumber());
}
// 创建自定义的号码选择器
PhoneSelectorAdapter adapter = new PhoneSelectorAdapter(mContext, phoneNumberList);
// TODO: 显示号码选择器的UI界面
}
// 自定义的号码选择器适配器
private class PhoneSelectorAdapter extends ArrayAdapter {
private LayoutInflater mInflater;
public PhoneSelectorAdapter(Context context, List phoneNumberList) {
super(context, 0, phoneNumberList);
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
holder = new ViewHolder();
holder.phoneNumberTextView = convertView.findViewById(android.R.id.text1);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String phoneNumber = getItem(position);
holder.phoneNumberTextView.setText(phoneNumber);
return convertView;
}
private class ViewHolder {
TextView phoneNumberTextView;
}
}
}
在您的代码中,调用showPhoneNumberSelector()
方法来显示自定义的号码选择器。注意替换TODO
注释部分的代码来显示号码选择器的UI界面。
以上示例代码会获取所有的SIM卡信息,并将其显示在一个自定义的号码选择器中。您可以根据自己的需求进一步定制号码选择器的UI界面。