gpt4 book ai didi

android - 共享库项目的 list 服务和权限

转载 作者:IT老高 更新时间:2023-10-28 23:01:08 25 4
gpt4 key购买 nike

我想开发一个包含 GCMIntentService 的库项目,它执行 GCM 注册过程并接收通过 GCM 发送的消息。

我已使用 AIDL 将我的库项目服务公开给宿主应用程序,但我还需要在应用程序项目中声明该服务.....如何避免这种情况?
此外,我还需要在应用程序 list 中声明 GCM 所需的所有权限。
有什么方法可以从宿主应用程序中引用库项目中的所有权限和服务,而无需在 list 中再次声明它们?

我已经搜索过了,发现:
1. Is it possible encapsulate permission inside Android framework (library)
这清楚地表明我想要实现的目标是不可能的。
2.有用的东西Library Project does the manifest file merge?@Hayes Haugen 的回答说“ADT 工具的版本 20 支持 AndroidManifest.xml 合并”
我正在使用 ADT 版本 20.0.3

我有没有办法让图书馆项目提供 GCM 集成?

最佳答案

你遇到了什么错误?

这对我很有用:

图书馆 list

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.plasync.client.android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.INTERNET" />
<!-- Needed for devices with 4.02 or earlier android -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="org.plasync.client.android.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="org.plasync.client.android.permission.C2D_MESSAGE" />
<!-- <uses-permission android:name="com.playsnc.client.android.data.permission.READ_WRITE"/>-->

<application android:label="" android:icon="@drawable/ic_launcher">
<!-- This is the signin activity for plAsync -->
<activity android:name="org.plasync.client.android.AsyncMultiplayerSetupActivity"
android:label="@string/SETUP_ACTIVITY_NAME"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

<!-- This is the intent for getting the local user. Apps that use plAsync must use this
intent to retrieve the local user, or allow the user to signin. Apps should
use startActivityForResult as the sigin activity may require user interaction -->
<intent-filter>
<action android:name="@string/SETUP_ASYNC_MULTIPLAYER_SESSION_ACTION"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

<receiver android:name="org.plasync.client.android.gcm.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
</intent-filter>
</receiver>

<service android:name="org.plasync.client.android.gcm.GcmReceiveIntentLauncher"/>
</application>
</manifest>

应用程序 list

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.plasync.client.android.testapp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="17" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="org.plasync.client.android.testapp.AsyncMultiplayerTestAppActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".search.FriendSearchActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>

<service android:name=".AsyncMultiplayerTestAppMessageReceiver"/>
</application>

</manifest>

另外,我想知道您使用服务和 AIDL 的解决方案是否过于矫枉过正。我从那条路线开始,但由于我的情况下进程间通信的复杂性而被关闭。我已经能够在我的库中简单地定义一个广播接收器和 Intent 服务,在我的应用程序中启动一个 Intent 服务。你只需要小心包名。和组件名称。包名将始终是您应用的包名,但组件名将是您的服务的类名。

关于android - 共享库项目的 list 服务和权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14621526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com