Прием с разрешениями в широковещательном приемнике не работает должным образом - PullRequest
1 голос
/ 07 июля 2019

В документации по Android (https://developer.android.com/guide/components/broadcasts#receiving-broadcasts-permissions) написано:

Если вы указали параметр разрешения при регистрации трансляции приемник (либо с помощью registerReceiver (BroadcastReceiver, IntentFilter, String, Handler) или в теге вашего манифеста), тогда только вещатели, которые запросили разрешение с тег в своем манифесте (и впоследствии был предоставлен разрешение, если оно опасно) может отправить намерение получателю.

Но когда я указываю разрешение SEND_SMS в теге получателя, получатель все равно получает широковещательные сообщения, даже если мое приложение не имеет разрешения SEND_SMS .

Я зарегистрировал получателя в манифесте Android:

<receiver android:name=".Demo"
            android:permission="android.permission.SEND_SMS">
            <intent-filter>
                <action android:name="demoFilter"/>
            </intent-filter>
</receiver>

Демонстрационный класс:

package com.android.wave;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Demo extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Toast.makeText(context, intent.getStringExtra("Data"), Toast.LENGTH_LONG).show();
    }
}

И я отправляю трансляцию в методе onCreate моей MainActivity:

sendBroadcast(new Intent("demoFilter").putExtra("Data", "some data"));

Разрешения для моего приложения: enter image description here

Когда запускается mainActivity, я получаю тостовое сообщение "Некоторые данные". Что я не должен получать, так как мое приложение не имеет разрешения, которое требуется получателю.

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