uid не имеет android.permission.SEND_SMS - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь отправить сообщение (SMS) из одного эмулятора в другой:

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="eheio.com.exo2">

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


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Способ отправки сообщения:

public void sendMessage(View view) {
        EditText number = findViewById(R.id.number);
        EditText message = findViewById(R.id.message);
        try {
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(number.getText().toString(), null, message.getText().toString(), null, null);
            Toast.makeText(getApplicationContext(), "SMS Sent!", Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), "SMS failed, please try again later!", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    }

Я получаю следующее исключение:

java.lang.SecurityException: отправка SMS-сообщения: uid 10082 не имеет android.permission.SEND_SMS.

1 Ответ

0 голосов
/ 13 октября 2018

Для начала вы можете проверить, какие разрешения предоставляются вашим приложениям, выполнив:

adb shell dumpsys package <your package>

, и вы увидите что-то вроде:

grantedPermissions:
  android.permission.MANAGE_ACCOUNTS
  android.permission.WRITE_SYNC_SETTINGS
  android.permission.RECEIVE_BOOT_COMPLETED

Разрешение android.permission.SEND_SMSэто dangerous уровень защиты.Это означает, что начиная с API 23 вам необходимо предложить пользователю принять разрешение.Недостаточно объявить его использование в манифесте.Вы можете прочитать об этом здесь: https://developer.android.com/guide/topics/permissions/overview#dangerous-permission-prompt

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