使用照片应用在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
答案 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
但后者需要一些编码并要求用户实时授予权限。