我使用此代码检查设备上是否安装了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卷返回= -19 01-11 10:24:09.649 27577-27577 /? E / IabHelper:应用内结算错误:操作状态非法(queryInventory):未设置IAB帮助程序。 01-11 10:24:09.652 27577-27577 /? E / AndroidRuntime:致命异常:main 流程:ir.omino.sorkho,PID:27577 java.lang.IllegalStateException:未设置IAB帮助器。无法执行操作:queryInventory 在ir.omino.sorkho.Utils.IabHelper.checkSetupDone(IabHelper.java:782) 在ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync(IabHelper.java:610) 在ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync(IabHelper.java:639) 在ir.omino.sorkho.MainActivity $ 50.onIabSetupFinished(MainActivity.java:2696) 在ir.omino.sorkho.Utils.IabHelper.startSetup(IabHelper.java:274) 在ir.omino.sorkho.MainActivity.buy4(MainActivity.java:2687) 在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 在ir.omino.sorkho.Utils.IabHelper.checkSetupDone(IabHelper.java:782) 在ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync(IabHelper.java:610) 在ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync(IabHelper.java:639) 在ir.omino.sorkho.MainActivity $ 50.onIabSetupFinished(MainActivity.java:2696) 在ir.omino.sorkho.Utils.IabHelper.startSetup(IabHelper.java:274) 在ir.omino.sorkho.MainActivity.buy4(MainActivity.java:2687) 在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卷返回= -19 01-11 10:24:16.332 1514-2301 /? E / ConnectivityService:RemoteException异常,试图为NetworkRequest发送回调消息[侦听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:未验证(7)
在未安装软件包的情况下如何防止夹缝?