1

アプリでバンプ API を使用しようとしています。Bump ライブラリ プロジェクトを自分のプロジェクトにインポートします。なぜこれが起こっているのか誰にも分かりますか?

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;
}

この場合の「ターゲット」が何であり、「エクスポート」する必要があるのか​​ わかりません。他の誰かがこれを見たことがありますか?

みんなありがとう!

4

2 に答える 2

3

exportedサービスタグで属性を使用します。たとえば<service android:exported="true" android:name="com.bump.api.BumpAPI">、マニフェストで。エクスポートされた属性とは、他のアプリケーションがそれにアクセスできるかどうか (アクティビティ/サービス/ブロードキャストなど) を意味します。あなたのコードでは、exportedブール値はfalse条件if(!exported)が常に真であるため、そこから返されます。私が言及した変更を行い、問題が解決しない場合はお知らせください。

ドキュメントについては、こちらを参照してください

于 2013-09-13T08:26:24.363 に答える