我正在尝试在我的应用中使用凹凸API。我将凹凸库项目导入到我的项目中。有人知道为什么会这样吗?
04-26 21:00:15.828: W/ActivityManager(528): Permission denied: checkComponentPermission() owningUid=10072
04-26 21:00:15.828: W/BroadcastQueue(528): Permission Denial: broadcasting Intent { act=com.bump.core.util.LocationDetector.PASSIVE_LOCATION_UPDATE flg=0x10 (has extras) } from com.helloworld.utility (pid=-1, uid=10071) is not exported from uid 10072 due to receiver com.bumptech.bumpga/com.bump.core.service.PassiveLocationReceiver
这是我的AndroidManifest.xml的相关部分:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<service android:name="com.bump.api.BumpAPI">
<intent-filter>
<action android:name="com.bump.api.IBumpAPI" />
</intent-filter>
</service>
我试图查看Android源代码,它源于ActivtiyManagerService.java:
// If the target is not exported, then nobody else can get to it.
if (!exported) {
Slog.w(TAG, "Permission denied: checkComponentPermission() owningUid=" + owningUid);
return PackageManager.PERMISSION_DENIED;
}
我不确定这种情况下的“目标”是什么,什么需要“导出”。有人看过吗?
谢谢你们!
最佳答案
在服务标签中使用exported
属性。例如清单中的<service android:exported="true" android:name="com.bump.api.BumpAPI">
。导出的属性表示,其他应用程序将有权访问该属性(活动/服务/广播等)。在您的代码中,exported
布尔值是false
,因此条件if(!exported)
始终为true,因此它从那里返回。做我提到的改变,让我们知道问题是否仍然存在。
对于文档,请转到here。