我正在尝试在我的应用中使用凹凸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

10-07 19:46
查看更多