错误Logcat Android Studio应用不再运行

时间:2019-02-23 17:48:52

标签: android

使用照片应用在Android Studio中进行练习。我一直在拍照,然后按日期,标签和地理位置对它们进行排序。两天前,每当我将手机连接到计算机时,我的代码都可以使用,Logcat崩溃,我的应用程序甚至无法崩溃。我从未编码的许多类现在都在我的代码中显示为错误,例如Handler / Looper / HandlerThread?

这是到目前为止我从Logcat可以理解的唯一错误:

2019-02-23 09:37:38.014 4066-4066/? E/SportWatchProviderService: You need to install SAccessory package to use this application.
2019-02-23 09:37:38.019 4066-4116/? E/SAAgent: SA_SDK_ERROR: Binding to accessory framework failed
    com.samsung.android.sdk.accessory.b: Is the Samsung Accessory Service Framework installed?!
        at com.samsung.android.sdk.accessory.SAAdapter.a(Unknown Source:174)
        at com.samsung.android.sdk.accessory.SAAgent.a(Unknown Source:2)
        at com.samsung.android.sdk.accessory.SAAgent$a.handleMessage(Unknown Source:33)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65)
2019-02-23 09:37:38.025 4066-4066/? E/SASdkConfig: Accessory Framework Not installed
2019-02-23 09:37:38.026 4066-4066/? E/SAAgent: SA_SDK_ERROR: exception: Accessory Framework Not installed
2019-02-23 09:37:38.026 4066-4066/? E/SAAgent: SA_SDK_ERROR: Samsung Accessory SDK cannot be initialized

2 个答案:

答案 0 :(得分:1)

如果这与三星附件协议有关,则我有相同的错误:

com.samsung.android.sdk.accessory.b: Is the Samsung Accessory Service Framework installed?!

就我而言,这是由于Proguard混淆了命名空间com.samsung中的所有内容。

作为修复,我在proguard文件中添加了以下内容:

-keep class com.samsung.** { *; }

您可能对此更加具体,但是对于此问题,您只需要保留com.samsung.android.**,因为还需要保留其他名称空间以进行SAP注册,例如{{ 1}}。

答案 1 :(得分:0)

我刚刚在 Android 11 (SDK 30) 上遇到了类似的错误。反编译 SAP 代码版本后。 2.6.4 发现调用了 getPackageInfo("com.samsung.accessory",0) 函数。

但是,根据 Android 11 指南,需要在清单中请求额外的权限:

<块引用>

为访问已安装的应用程序提供更好的问责制 设备,面向 Android 11(API 级别 30)的应用将看到一个过滤的 默认情况下已安装的应用程序列表。为了访问更广泛的列表 在已安装的应用程序中,应用程序可以指定有关他们需要的应用程序的信息 直接查询和交互。这可以通过添加一个 Android 清单中的元素。

要使 getPackageInfo 工作,您需要通过调用 getPackageInfo 方法明确提供 SAP 检查的所有三星软件包。

为了解决这个问题,我在 标签之前添加了以下几行清单。

<queries>
    <package android:name="com.samsung.accessory" />
    <package android:name="com.samsung.android.providers.context" />
    <package android:name="com.samsung.android.app.watchmanager" />
    <package android:name="com.samsung.accessory.safiletransfer" />
    <package android:name="com.samsung.accessory.goproviders" />
    <package android:name="com.samsung.accessory.saproviders" />
</queries>

或者你可以使用

QUERY_ALL_PACKAGES permission

但后者需要一些编码并要求用户实时授予权限。