Не удается получить IMEI устройства - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу получить IMEI устройства, но он всегда показывает журнал:

E / GoogleTagManager: недопустимый макрос: _gtm.loadEventEnabled

Я уже добавил ниже вещей

apply plugin: 'com.google.gms.google-services' в build.grade

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> в AndroidManifest.xml.

Как я могу это исправить? или есть ли способ получить IMEI устройства?

Вот мой код:

public class MainActivity extends AppCompatActivity {

    public static String deviceIMEI;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        deviceIMEI = TelephonyMgr.getDeviceId();
        Log.e("MainActivity", "deviceIMEI: " + deviceIMEI);
    }

}

Вот мой AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="playground.com.pgapp">

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@drawable/icon"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:allowBackup="true" >

        <meta-data
            android:name="com.google.android.gms.ads.playground-app-id"
            android:value="ca-app-pub-8130601335284542~7374133691"/>

        <activity android:name=".MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".CoverActivity"
                  android:screenOrientation="portrait" />

        <activity android:name=".HomePageActivity"
                  android:screenOrientation="portrait" />

        <activity android:name=".PostActivity"
                  android:screenOrientation="portrait"/>

        <activity android:name=".PersonActivity"
                  android:screenOrientation="portrait"/>

        <activity android:name=".FullPostActivity"
            android:screenOrientation="portrait"/>

        <service
            android:name=".MyFirebaseInstanceIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>

        <service
            android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
    </application>

</manifest>

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

Вы хотите позвонить android.telephony.TelephonyManager.getDeviceId () .

Это вернет любую строку, однозначно идентифицирующую устройство (IMEI в GSM, MEID для CDMA).

Для этого вам понадобится следующее разрешение в вашем AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

.

При этом будьте осторожны.Пользователи не только будут удивляться, почему ваше приложение получает доступ к своему стеку телефонии, но и может быть сложно перенести данные, если пользователь получит новое устройство.

Обновление: Как упоминалось в комментариях нижеЭто не безопасный способ аутентификации пользователей, и это вызывает проблемы конфиденциальности.Не рекомендуетсяВместо этого посмотрите на Google + Login API , если вы хотите внедрить систему входа без трения.

Android Backup API также доступен, если вы просто хотите легкий способсохранить набор строк, когда пользователь перезагружает свой телефон (или покупает новое устройство).

Ссылка this

0 голосов
/ 25 апреля 2019

Используйте это

Разрешение на использование в файле mainfest;

 <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

Чем использовать ваш код

 TelephonyManager  telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
        // TODO: Consider calling
        //    ActivityCompat#requestPermissions
        // here to request the missing permissions, and then overriding
        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
        //                                          int[] grantResults)
        // to handle the case where the user grants the permission. See the documentation
        // for ActivityCompat#requestPermissions for more details.
        return;
    }
    deviceIMEI = telephonyManager .getDeviceId();
    Log.e("MainActivity", "deviceIEMI: " + deviceIMEI);
0 голосов
/ 25 апреля 2019

Сначала вы должны запросить у пользователя разрешение на доступ к телефону в файле манифеста: -

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

после этого вы можете получить номер IMEI

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...