я использую этот код, чтобы проверить, установлен ли на устройстве пакет com.farsitel.bazaar или нет
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (isPackageInstalled("com.farsitel.bazaar")) {
// Bazar is installed
try {
mHelper.launchPurchaseFlow(MainActivity.this, SKU_PREMIUM1, RC_REQUEST, mPurchaseFinishedListener, "payload-string");
}
catch (Exception e) {
e.printStackTrace();
Toast.makeText(MainActivity.this,
"پرداخت موفق نبود لطفا دوباره سعی کنید", Toast.LENGTH_SHORT).show();
}
}
else {
Toast.makeText(MainActivity.this,
"لطفا برنامه کافه بازار را نصب کنید", Toast.LENGTH_SHORT).show();
// not installed
}
}
}, 2000);
public boolean isPackageInstalled(String PackageName) {
PackageManager manager = getPackageManager();
boolean isAppInstalled = false;
try {
manager.getPackageInfo(PackageName, PackageManager.GET_ACTIVITIES);
isAppInstalled = true;
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return isAppInstalled;
}
при установке пакета все исправно и без ошибок, но когда пакет не установлен, приложение аварийно завершает работу со следующей ошибкой в журнале:
01-11 10:24:09.646 1048-1720/? E/msm8974_platform: platform_check_backends_match: Invalid snd_device =
01-11 10: 24: 09.646 1048-1720 /? E / msm8974_platform: platform_check_backends_match: неверный snd_device =
01-11 10: 24: 09.646 1048-1720 /? E / audio_hw_primary: enable_snd_device: введите 2
01-11 10: 24: 09.647 1048-1720 /? E / msm8974_platform: platform_get_snd_device_backend_index: BE Таблица имен DAI отсутствует
01-11 10: 24: 09.647 1048-1720 /? E / audio_hw_utils: send_app_type_cfg_for_device: не удалось получить внутренний индекс для snd-устройства, защищенного динамиком ret = -14
01-11 10: 24: 09.649 1048-1720 /? E / ACDB-LOADER: Ошибка: ACDB AudProc vol возвращено = -19
01-11 10: 24: 09.649 27577-27577 /? E / IabHelper: ошибка биллинга в приложении: недопустимое состояние для операции (queryInventory): помощник IAB не настроен.
01-11 10: 24: 09.652 27577-27577 /? E / AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: главная
Процесс: ir.omino.sorkho, PID: 27577
java.lang.IllegalStateException: помощник IAB не настроен. Невозможно выполнить операцию: queryInventory
at ir.omino.sorkho.Utils.IabHelper.checkSetupDone (IabHelper.java:782)
at ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync (IabHelper.java:610)
at ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync (IabHelper.java:639)
at ir.omino.sorkho.MainActivity $ 50.onIabSetupFinished (MainActivity.java:2696)
at ir.omino.sorkho.Utils.IabHelper.startSetup (IabHelper.java:274)
at ir.omino.sorkho.MainActivity.buy4 (MainActivity.java:2687)
at ir.omino.sorkho.MainActivity $ 9.onClick (MainActivity.java:667)
на android.view.View.performClick (View.java:6274)
на android.view.View $ PerformClick.run (View.java:24859)
на android.os.Handler.handleCallback (Handler.java:789)
на android.os.Handler.dispatchMessage (Handler.java:98)
на android.os.Looper.loop (Looper.java:164)
на android.app.ActivityThread.main (ActivityThread.java:6710)
в java.lang.reflect.Method.invoke (родной метод)
на com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:770)
01-11 10: 24: 09.654 27577-27577 /? E / Pushe: исключение поймано
java.lang.IllegalStateException: помощник IAB не настроен. Невозможно выполнить операцию: queryInventory
at ir.omino.sorkho.Utils.IabHelper.checkSetupDone (IabHelper.java:782)
at ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync (IabHelper.java:610)
at ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync (IabHelper.java:639)
at ir.omino.sorkho.MainActivity $ 50.onIabSetupFinished (MainActivity.java:2696)
at ir.omino.sorkho.Utils.IabHelper.startSetup (IabHelper.java:274)at ir.omino.sorkho.MainActivity.buy4 (MainActivity.java:2687)
at ir.omino.sorkho.MainActivity $ 9.onClick (MainActivity.java:667)
на android.view.View.performClick (View.java:6274)
на android.view.View $ PerformClick.run (View.java:24859)
на android.os.Handler.handleCallback (Handler.java:789)
на android.os.Handler.dispatchMessage (Handler.java:98)
на android.os.Looper.loop (Looper.java:164)
на android.app.ActivityThread.main (ActivityThread.java:6710)
в java.lang.reflect.Method.invoke (родной метод)
на com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:770)
01-11 10: 24: 10.335 2182-2435 /? E / PBSessionCacheImpl: sessionId [9598084607418021] не сохранен.
01-11 10: 24: 16.271 1048-1720 /? E / msm8974_platform: platform_check_backends_match: неверный snd_device =
01-11 10: 24: 16.271 1048-1720 /? E / msm8974_platform: platform_check_backends_match: неверный snd_device =
01-11 10: 24: 16.271 1048-1720 /? E / audio_hw_primary: enable_snd_device: введите 2
01-11 10: 24: 16.272 1048-1720 /? E / msm8974_platform: platform_get_snd_device_backend_index: BE Таблица имен DAI отсутствует
01-11 10: 24: 16.272 1048-1720 /? E / audio_hw_utils: send_app_type_cfg_for_device: не удалось получить внутренний индекс для snd-устройства, защищенного динамиком ret = -14
01-11 10: 24: 16.272 1048-1720 /? E / ACDB-LOADER: Ошибка: ACDB AudProc vol возвращено = -19
01-11 10: 24: 16,332 1514-2301 /? E / ConnectivityService: Удалено исключение RemoteException при попытке отправить сообщение обратного вызова для NetworkRequest [LISTEN id = 844, [Возможности: INTERNET & NOT_RESTRICTED & TRUSTED & NOT_VPN & FOREGROUND]]
01-11 10: 24: 16.347 1514-13472 /? E / ActivityManager: applyOptionsLocked: Неизвестный animationType = 0
01-11 10: 24: 17.233 1073-27753 /? E / MediaExtractor: трассировка подключения 0xea661380 0xea674c00
01-11 10: 24: 17,473 1157-19681 /? E / OMXNodeInstance: setConfig (0xe69f56e0: google.mp3.decoder, ConfigPriority (0x6f800002)) ОШИБКА: не определено (0x80001001)
01-11 10: 24: 17,474 1157-19681 /? E / OMXNodeInstance: setConfig (0xe69f56e0: google.mp3.decoder, ConfigPriority (0x6f800002)) ОШИБКА: не определено (0x80001001)
01-11 10: 24: 17,474 1157-7510 /? E / OMXNodeInstance: getConfig (0xe69f56e0: google.mp3.decoder, ConfigAndroidVendorExtension (0x6f100004)) ОШИБКА: не определено (0x80001001)
01-11 10: 24: 17.907 27722-27764 / ir.omino.sorkho E / Volley: [8068] NetworkDispatcher.processRequest: необработанное исключение java.lang.NullPointerException: попытка вызвать виртуальный метод int java.lang.String.length () 'на нулевой ссылке на объект
java.lang.NullPointerException: попытка вызвать виртуальный метод int java.lang.String.length () для нулевой ссылки на объект
на java.net.URLEncoder.encode (URLEncoder.java:204)
на com.android.volley.Request.encodeParameters (Request.java:491)
на com.android.volley.Request.getBody (Request.java:477)
в com.android.volley.toolbox.HurlStack.addBodyIfExists (HurlStack.java:245)
в com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest (HurlStack.java:219)
на com.android.volley.toolbox.HurlStack.executeRequest (HurlStack.java:97)на com.android.volley.toolbox.BasicNetwork.performRequest (BasicNetwork.java:131)
в com.android.volley.NetworkDispatcher.processRequest (NetworkDispatcher.java:120)
на com.android.volley.NetworkDispatcher.run (NetworkDispatcher.java:87)
01-11 10: 24: 18.195 27722-27722 / ir.omino.sorkho E / Запустить ожидающие услуги: 0
01-11 10: 24: 18,287 656-656 /? E / HWComposer: presentAndGetReleaseFences: не удалось отобразить 0: NotValidated (7)
как я могу предотвратить взлом, когда пакет не установлен ??