C++Builder XE6でAndroidスマートフォンの電話番号などの端末情報を取得するには

C++Builder XE6でAndroidスマートフォンの電話番号などの端末情報を取得するサンプルアプリケーションです。

FireMonkeyモバイルアプリケーションを作成します。

フォームにボタンコンポーネント(TButton)とメモコンポーネント(TMemo)を配置します。

JTelephonyManager01

ボタンコンポーネントのクリックイベントを記述します。

#include <Androidapi.Helpers.hpp>
#include <Androidapi.JNI.JavaTypes.hpp>
#include <Androidapi.JNI.GraphicsContentViewText.hpp>
#include <Androidapi.JNIBridge.hpp>
#include <Androidapi.JNI.Telephony.hpp>
#include <FMX.Helpers.Android.hpp>

void __fastcall TForm1::Button1Click(TObject *Sender) {
    _di_JObject TelephonyServiceNative = SharedActivityContext()->getSystemService(TJContext::JavaClass->TELEPHONY_SERVICE);
    _di_JTelephonyManager TelephonyManager = TJTelephonyManager::Wrap(((_di_ILocalObject)TelephonyServiceNative)>GetObjectID());

    Memo1->Lines->BeginUpdate();
    try {
        Memo1->Lines->Add(L"電話番号");
        Memo1->Lines->Add(JStringToString(TelephonyManager->getLine1Number()));
        Memo1->Lines->Add(L"デバイスID");
        Memo1->Lines->Add(JStringToString(TelephonyManager->getDeviceId()));
        Memo1->Lines->Add(L"SIMの国コード");
        Memo1->Lines->Add(JStringToString(TelephonyManager->getSimCountryIso()));
        Memo1->Lines->Add(L"MCC+MNC (mobile country code + mobile network code)");
        Memo1->Lines->Add(JStringToString(TelephonyManager->getSimOperator()));
        Memo1->Lines->Add(L"サービスプロバイダの名前");
        Memo1->Lines->Add(JStringToString(TelephonyManager->getSimOperatorName()));
        Memo1->Lines->Add(L"SIMのシリアル番号");
        Memo1->Lines->Add(JStringToString(TelephonyManager->getSimSerialNumber()));
        Memo1->Lines->Add(L"ボイスメールナンバー");
        Memo1->Lines->Add(JStringToString(TelephonyManager->getVoiceMailNumber()));
        Memo1->Lines->Add(L"SIMの状態");
        const int SimState = TelephonyManager->getSimState();
        if (SimState == TJTelephonyManager::JavaClass->SIM_STATE_UNKNOWN)
            Memo1->Lines->Add(L"SIM_STATE_UNKNOWN");
        if (SimState == TJTelephonyManager::JavaClass->SIM_STATE_ABSENT)
            Memo1->Lines->Add(L"SIM_STATE_ABSENT");
        if (SimState == TJTelephonyManager::JavaClass->SIM_STATE_PIN_REQUIRED)
            Memo1->Lines->Add(L"SIM_STATE_PIN_REQUIRED");
        if (SimState == TJTelephonyManager::JavaClass->SIM_STATE_NETWORK_LOCKED)
            Memo1->Lines->Add(L"SIM_STATE_NETWORK_LOCKED");
        if (SimState == TJTelephonyManager::JavaClass->SIM_STATE_READY)
            Memo1->Lines->Add(L"SIM_STATE_READY");
    }
    __finally {
        Memo1->Lines->EndUpdate();
    }
}

アプリケーションを実行し、ボタンをクリックします。

メモコンポーネントに端末情報が表示されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください