我在做什么:
在我的应用程序(具有minSdkVersion 15的Android)中,我有一个broadcastReceiver,它可以监听Intent.ACTION_PACKAGE_ADDED
(设备上已安装了新的应用程序包).每当发生这种情况时,接收器都会尝试使用Jsoup从Internet上获取一些数据.
问题:
只要我在安装其他应用程序时(例如从Play商店中)运行我的应用程序,以下代码就可以正常运行.但是,如果我杀死我的应用程序,然后安装另一个应用程序,则我的应用程序将崩溃,并显示“我的应用程序已停止”对话框(因为我的接收器崩溃了)以及此错误:
No implementation found for long com.androID.tools.profiler.support.network.httpTracker$Connection.nextID() (trIEd Java_com_androID_tools_profiler_support_network_httpTracker_00024Connection_nextID and Java_com_androID_tools_profiler_support_network_httpTracker_00024Connection_nextID__)FATAL EXCEPTION: AsyncTask #1Process: com.myorg.myapp, PID: 11796java.lang.RuntimeException: An error occurred while executing doInBackground() at androID.os.AsyncTask.done(AsyncTask.java:325) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at androID.os.AsyncTask$SerialExecutor.run(AsyncTask.java:243) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761)Caused by: java.lang.UnsatisfIEdlinkError: No implementation found for long com.androID.tools.profiler.support.network.httpTracker$Connection.nextID() (trIEd Java_com_androID_tools_profiler_support_network_httpTracker_00024Connection_nextID and Java_com_androID_tools_profiler_support_network_httpTracker_00024Connection_nextID__) at com.androID.tools.profiler.support.network.httpTracker$Connection.nextID(Native Method) at com.androID.tools.profiler.support.network.httpTracker$Connection.<init>(httpTracker.java:191) at com.androID.tools.profiler.support.network.httpTracker$Connection.<init>(httpTracker.java:186) at com.androID.tools.profiler.support.network.httpTracker.trackConnection(httpTracker.java:280) at com.androID.tools.profiler.support.network.httpurl.TrackedhttpURLConnection.<init>(TrackedhttpURLConnection.java:49) at com.androID.tools.profiler.support.network.httpurl.httpsURLConnection$.<init>(httpsURLConnection$.java:50) at com.androID.tools.profiler.support.network.httpurl.httpURLWrapper.wrapURLConnectionHelper(httpURLWrapper.java:40) at com.androID.tools.profiler.support.network.httpurl.httpURLWrapper.wrapURLConnection(httpURLWrapper.java:55) at org.Jsoup.helper.httpconnection$Response.createConnection(httpconnection.java:889) at org.Jsoup.helper.httpconnection$Response.execute(httpconnection.java:727) at org.Jsoup.helper.httpconnection$Response.execute(httpconnection.java:706) at org.Jsoup.helper.httpconnection.execute(httpconnection.java:299) at org.Jsoup.helper.httpconnection.get(httpconnection.java:288) at com.myorg.myapp.installreceiver$PlayStoreFetcher.doInBackground(installreceiver.java:76) at com.myorg.myapp.installreceiver$PlayStoreFetcher.doInBackground(installreceiver.java:70) at androID.os.AsyncTask.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at androID.os.AsyncTask$SerialExecutor.run(AsyncTask.java:243) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761)
我的代码:
installreceiver.java:
public class installreceiver extends broadcastReceiver { @OverrIDe public voID onReceive(Context context, Intent intent) { if(intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) { String data = new FetchData().execute("URL").get(); // The rest of my code... } } private static class FetchData extends AsyncTask<String, Integer, String> { @OverrIDe protected String doInBackground(String... strings) { try { // This is the cause of the problem return Jsoup.connect(strings[0]).get().text(); } catch (Exception e) { return null; } } }}
AndroIDManifest.xml:
<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID" package="com.myorg.myapp"> <uses-permission androID:name="androID.permission.INTERNET" /> <application androID:allowBackup="true" androID:icon="@mipmap/ic_launcher" androID:label="@string/app_name" androID:roundIcon="@mipmap/ic_launcher_round" androID:supportsRtl="true" androID:theme="@style/Apptheme"> <activity androID:name=".ActivitIEs.MainActivity"> <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity androID:name=".ActivitIEs.PlayStoreActivity"/> <activity androID:name=".ActivitIEs.InstalledAppsActivity"/> <activity androID:name=".ActivitIEs.PredefinedFiltersActivity"/> // This is linking my installreceiver.java <receiver androID:name=".installreceiver"> <intent-filter> <action androID:name="androID.intent.action.PACKAGE_ADDED" /> <data androID:scheme="package" /> </intent-filter> </receiver> </application></manifest>
build.gradle:
dependencIEs { compile 'org.Jsoup:Jsoup:1.11.2' // The rest of my dependencIEs...}
我的尝试:
>我已经在Jsoup调用中加入了通用catch(Exception e)语句,但是仍然抛出错误.
>我查找了此错误,并找到了诸如this one和this one之类的答案,但它们似乎都无法解决我的问题.
>我将Jsoup调用移到IntentService并从我的installreceiver启动了该服务,但是仍然抛出了同样的错误(来自该服务).
>尝试使用(new URL(url)).openConnection()获取HTML,并得到了相同的错误,但是现在由于URLConnection而不是Jsoup了.
>使用Thread类而不是AsyncTask,但仍然出现相同的错误.
我的尝试表明该错误与Jsoup并没有真正的关系,它与应用程序未运行时从接收器连接到Internet有关!
我猜测此httpTracker $Connection.nextID()出现导入问题,这是在我的应用未运行时发生的.
任何想法如何解决这个问题?
解决方法:
当您尝试读取不存在的dll / so文件时,通常会发生这种情况.
由于您的工作非常标准,因此问题可能出在androID studio而不是您的代码上.
要解决它-只需将最小sdk提高到20(或更高).
(高级网络探查器崩溃,因为版本20不支持它).
以上是内存溢出为你收集整理的java-如何在Android BroadcastReceiver中使用Jsoup时解决“ UnsatisfiedLinkError”问题?全部内容,希望文章能够帮你解决java-如何在Android BroadcastReceiver中使用Jsoup时解决“ UnsatisfiedLinkError”问题?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)