标签: android-subscriptionmanager

订阅 ID 在 Android 中保留多长时间?

从 API 级别 22 开始,Android 原生支持双 SIM 卡设备。API 的中心是SubscriptionInfo.getSubscriptionId().

使用这些 ID,您可以检索SmsManager每个 SIM 卡的 s 以发送短信和彩信。您还可以识别通过哪张 SIM 卡接收短信SMS_RECEIVED_ACTION,等等。

但是,订阅 ID 的生命周期是多长?我可以将订阅 ID 存储在本地数据库中并指望它在以后仍然有效并指向同一张 SIM 卡吗?稍后,我的意思是在重新启动设备、取出 SIM 卡并将其重新插入之后,甚至在将设备恢复出厂设置之后。

android sim-card android-subscriptionmanager

8
推荐指数
1
解决办法
2162
查看次数

如何以编程方式获取我设备的手机号码?

我曾尝试使用 2 种方法来检索我的电话号码,但它们都不起作用。我用了:

  1. 电话经理
  2. 订阅管理器

我确实得到了网络名称、国家/地区 iso 和 IMEI,但是每当我尝试返回 Number 时,它什么都不返回。

我还为这些添加了所有必需的权限!我的清单看起来像:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Run Code Online (Sandbox Code Playgroud)

使用TelephonyManager 的代码:

TelephonyManager phoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
phoneMgr.getLine1Number()
Run Code Online (Sandbox Code Playgroud)

使用SubscriptionManager 的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        List<SubscriptionInfo> subscription = SubscriptionManager.from(getApplicationContext()).getActiveSubscriptionInfoList();
        for (int i = 0; i < subscription.size(); i++) {
            SubscriptionInfo info = subscription.get(i);
            Log.e("TAG", "number " + info.getNumber());
            Log.e("TAG", "network name : " + info.getCarrierName());
            Log.e("TAG", "country iso " + info.getCountryIso());
        }
    }
Run Code Online (Sandbox Code Playgroud)

在两次尝试中,我都一无所获!

有没有其他方法可以获取电话号码,或者我做错了什么?

java android phone-number telephonymanager android-subscriptionmanager

6
推荐指数
1
解决办法
8063
查看次数

SubscriptionManager.from() 已弃用

以前我们用来获取SubscriptionManagerusing 的实例

SubscriptionManager subscriptionManager=SubscriptionManager.from(this);
Run Code Online (Sandbox Code Playgroud)

SubscriptionManager.from(context)在 API 28 中已弃用,获取SubscriptionManager实例的新方法是什么?

android kotlin android-subscriptionmanager

3
推荐指数
1
解决办法
1911
查看次数

无法从 Google Play Console 中的实时开发者通知发送测试通知

我已按照以下步骤操作:

  1. 转到 Google Cloud Console 并创建/选择一个项目。
  2. 在标题上,单击以打开菜单并选择“发布/订阅”,或单击 https://console.cloud.google.com/cloudpubsub/topic/list
  3. 创建/选择一个主题。
  4. 添加服务帐号 google-play-developer-notifications@system.gserviceaccount.com,并为其授予 Pub/Sub Publisher 角色。
  5. 创建订阅。有两种类型的订阅:
    • 拉:我们需要配置我们的服务器来拉新消息。
    • 推送:类似于ios,通知发送到我们配置的端点。
  6. 转到 Google Play 管理中心并选择您的应用。
  7. 单击“开发工具”,然后单击“服务和 API”。
  8. 在实时开发人员通知上键入主题名称。
  9. 您可以发送测试通知来测试所有连接。

但是当我发送测试通知时,我收到此错误:

在主题项目/project_id/topics/topic_name 上发布测试时发生错误。确保正确创建和配置主题,并设置所需的权限。请参阅实时开发人员通知的发布/订阅指南以了解更多信息。

  1. 我已向我的服务帐户授予发布/订阅发布者权限。
  2. 主题名称也正确。
  3. 我可以在 google 开发者控制台中发送来自该主题的测试消息,并且我在我的服务器上收到了该响应。

任何帮助表示赞赏。

android google-cloud-pubsub google-developers-console google-play-console android-subscriptionmanager

2
推荐指数
1
解决办法
827
查看次数