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" />