java.lang.SecurityException: не удается найти приложение для вызывающей стороны android.app.ApplicationThreadProxy при регистрации получателя android.content.IIntentReceiver

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

В моем приложении я использую BroadcastReceiver который используется для проверки интернет-соединения.

Таким образом, чтобы быть конкретным, приложение имеет вышеупомянутое Exception при регистрации этого BroadcastReceiver, Любая помощь будет высоко оценена!

Мой logcat как ниже

java.lang.RuntimeException: Unable to resume activity {com.android.myproject/com.android.myproject.MapActivity}: java.lang.SecurityException: Unable to find app for caller android.app.ApplicationThreadProxy@43155660 (pid=24211) when registering receiver android.content.IIntentReceiver$Stub$Proxy@43151368
1 at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2762)
2 at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2791)
3 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1288)
4 at android.os.Handler.dispatchMessage(Handler.java:99)
5 at android.os.Looper.loop(Looper.java:137)
6 at android.app.ActivityThread.main(ActivityThread.java:5095)
7 at java.lang.reflect.Method.invokeNative(Native Method)
8 at java.lang.reflect.Method.invoke(Method.java:511)
9 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:845)
10 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
11 at dalvik.system.NativeStart.main(Native Method)
12Caused by: java.lang.SecurityException: Unable to find app for caller android.app.ApplicationThreadProxy@43155660 (pid=24211) when registering receiver android.content.IIntentReceiver$Stub$Proxy@43151368
13 at android.os.Parcel.readException(Parcel.java:1425)
14 at android.os.Parcel.readException(Parcel.java:1379)
15 at android.app.ActivityManagerProxy.registerReceiver(ActivityManagerNative.java:2228)
16 at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1356)
17 at android.app.ContextImpl.registerReceiver(ContextImpl.java:1324)
18 at android.app.ContextImpl.registerReceiver(ContextImpl.java:1318)
19 at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:423)
20 at com.android.myproject.MapActivity.onResumeOperations(MapActivity.java:584)
21 at com.android.myproject.MapActivity.onResume(MapActivity.java:618)
22 at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1185)
23 at android.app.Activity.performResume(Activity.java:5203)
24 at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2752)

Чтобы уточнить мой вопрос, мой onResumeOperations() выглядит как

 public void onResumeOperations(){
    if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER )&& !isFinishing()) {
        ShowGpsDialog();
    } else {
        removeGpsDialog();
    }

    registerReceiver(internetConnectionReciever, new IntentFilter(
            "android.net.conn.CONNECTIVITY_CHANGE"));
    registerReceiver(GpsChangeReceiver, new IntentFilter(
            LocationManager.PROVIDERS_CHANGED_ACTION));
    isRecieverRegistered = true;

    if (AndyUtils.isNetworkAvailable(this)
            && manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        if (!isDataRecieved) {

            checkStatus();
            startLocationUpdateService();
           // getPreReservations();
        }
    }

    registerIsApproved();

    startRepeatingChecker();
}

этот onResumeOperations() называется в onResume(), И как я уже упоминал ранее, проблема возникает при регистрации internetConnectionReceiver,

2 ответа

Решение

Эта ошибка означает, что произошла ошибка связи с другим процессом, обрабатывающим Intent,

эта ошибка может случиться при отправке intent с intent extras слишком большой, больше максимального размера транзакции (1Mb).

Передача фотографий высокого разрешения или большого файла через extras не рекомендуется, рекомендуется сохранить файл на внешнем хранилище Uri ссылку на него и отправить этот реф как String в ваших намерениях дополнительно

yourIntent.putExtra("key", yourUri.toString)

Также попробуйте android:exported="true" в activity тег

<activity
android:name=".your_activity"
android:label="@string/app_name"
android:exported="true">

установка экспортируемого тега в true означает, что другое приложение, не связанное с моим приложением, может получить к нему доступ

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Другие вопросы по тегам