Намеренные дополнения не доставляются на конкретное устройство - PullRequest
0 голосов
/ 07 сентября 2018

В Деятельности А я, по сути, имею:

Long customerId = 123;
intent.putExtra("customerId", customerId);
startActivity(intent);

А в действии B onCreate () я имею:

mCustomerId = getIntent().getLongExtra("customerId", -1);

Но для одного из моих пользователей (Nexus 4, Android 6.0.1) mCustomerId разрешается до -1 в действии B (-1 - значение по умолчанию). Этот код отлично работает для других моих 1000 пользователей.

У этого же пользователя есть похожая проблема, когда он получает дополнительное намерение в библиотеке, которую я использую:

https://github.com/Ereza/CustomActivityOnCrash/issues/56

Как это может произойти?

Вход:

Fatal Exception: java.lang.IllegalArgumentException
Update is not supported for content://appinventor.ai_GavinGT.TipTracker_9_1_426am_ready_for_market/customers/-1
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.data.TipProvider.update (TipProvider.java:326)
android.content.ContentProvider$Transport.update (ContentProvider.java:355)
android.content.ContentResolver.update (ContentResolver.java:1364)
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.customer_info.CustomerProfileActivity.saveChanges (CustomerProfileActivity.java:208)
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.customer_info.CustomerProfileActivity.access$400 (CustomerProfileActivity.java:58)
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.customer_info.CustomerProfileActivity$6.onDebouncedClick (CustomerProfileActivity.java:137)
appinventor.ai_GavinGT.DeliveryTipTrackerPro_ready_for_market.custom_classes.DebouncedOnClickListener.onClick (DebouncedOnClickListener.java:39)
android.view.View.performClick (View.java:5204)
android.view.View$PerformClick.run (View.java:21153)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:148)
android.app.ActivityThread.main (ActivityThread.java:5420)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:726)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

Как вы можете видеть из второй строки журнала, -1 вставляется как rowId для таблицы клиентов, когда оно должно быть 123 (123 - просто пример, rowId может быть любым числом больше 0).

РЕДАКТИРОВАТЬ: я начинаю думать, что этот парень может ковыряться в моем приложении в АБР. Это объясняет, почему преднамеренные дополнения не доставляются:

Пользователь каким-то образом получает доступ к функциям Pro в бесплатной версии

Ответы [ 4 ]

0 голосов
/ 07 сентября 2018

Убедитесь, что вы не используете любой режим запуска, кроме стандартного (по умолчанию). Если вы используете атрибут launchMode при получении действия в файле манифеста, то вам придется соответствующим образом иметь дело с действием получения (возможно, вам придется переопределить метод onNewIntent, если действие уже существует в текущей задаче). Для получения дополнительной информации прочитайте эту документацию - https://developer.android.com/guide/components/activities/tasks-and-back-stack

0 голосов
/ 07 сентября 2018

Попробуйте сделать это так:

    Intent intent = new Intent(MainActivity.this,Main2Activity.class);
    Long customerId = Long.valueOf(123);
    intent.putExtra("customerId", customerId);
    startActivity(intent);
0 голосов
/ 07 сентября 2018

Если вы передаете дополнения в намерение из действия A, и они не получены в получающем действии B onCreate (), тогда действие B уже существует в backstack Android, и дополнительные не попадают в onCreate (), но они могут быть найти в onNewIntent () пожалуйста, попробуйте код ниже:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    mCustomerId = getIntent().getLongExtra("customerId", -1);

}

Надеюсь, это сработает наверняка.

0 голосов
/ 07 сентября 2018
Yes, You can do like this:-

In First Activity  ,customerId is in the long format.

Long customerId = 123;
intent.putExtra("customerId", customerId);
startActivity(intent);

But in Second Activity,do like this
long defaultVal= -1;
mCustomerId = getIntent().getLongExtra("customerId", defaultVal);

Perhaps ,This will give you a better solution.
   Thanks.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...