Tag: android service

摆脱“导出服务不需要许可”的警告

我正在寻找一个解决scheme来摆脱这个警告。 我甚至不明白为什么会出现。 我看了一个没有警告的SDK例子。 起初,这里是我的清单,我得到的警告导出服务不需要权限 : <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.Sherlock"> <service android:name=".AuthenticationService" android:exported="true"> <intent-filter> <action android:name="android.accounts.AccountAuthenticator" /> </intent-filter> <meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator" […]

Android库清单与应用程序清单

我在这里读过类似的问题,但是在一些事情上我还不清楚。 使用图书馆项目意味着我的整个项目将有两个清单 – 一个用于图书馆,另一个用于“主”应用程序项目 – 我不清楚在哪些方面或如果有一些冗余。 我正在开发一个具有“精简版”和“付费”版本的应用程序部件,因此几乎所有的代码都在一个库项目中。 作为一个小部件,图书馆将至less有一个接收器,一个服务,一个configuration活动,以及一些其他的活动。 那么应该在哪里声明这些组件的完整声明(包括意图,filter等)呢? 他们是否进入图书馆清单,或在申请包本身的清单中,引用图书馆中的类(例如android:name =“com.foo.mylibrary.MyService”)? 我所看到的一些例子似乎是在两个清单中都宣布它们,但是我怀疑把它们放在一个或另一个中是没有用的。

活动与服务之间的沟通

我正在尝试为Android制作自己的MusicPlayer。 我遇到问题的地方是在后台运行一些东西。 主要活动pipe理GUI,直到现在所有的歌曲都在播放。 我想分开GUI和音乐播放课程。 我想把音乐pipe理部分放在服务中,并保留现在的其他东西。 我的问题是我无法组织Activity和Service之间的通信,因为它们之间发生了很多的通信,包括两个方向的移动对象。 我尝试了很多技术,我在这里searchStack Overflow,但每次遇到问题。 我需要服务能够发送对象到活动,反之亦然。 当我添加小部件时,我也希望它能够与服务进行通信。 任何提示都赞赏,如果你需要源代码的地方评论下面,但现在在这个过渡变得混乱。 有没有更多的高级教程比调用一个从服务返回随机数的方法? :P 编辑:可能的解决scheme是使用RoboGuice库和注射移动对象

在后台服务中使用Google Play服务LocationClient

我的应用程序旨在定期跟踪用户的位置,并将其发送到服务器,最近我改变了我的代码与谷歌播放服务的位置API。 我创build了locationClient并连接到onStartCommand中的服务 public int onStartCommand(Intent intent, int flags, int startId) { setUpLocationClientIfNeeded(); if(!mLocationClient.isConnected() || !mLocationClient.isConnecting()) mLocationClient.connect(); return START_STICKY; } 并在onConnected方法中,我发送一个位置请求, @Override public void onConnected(Bundle arg0) { System.out.println("Connected …"); mLocationClient.requestLocationUpdates(REQUEST, this); } REQUEST对象是, private static final LocationRequest REQUEST = LocationRequest.create() .setInterval(5*60*1000) // 5 minutes .setFastestInterval(3*60*1000) // 3 minutes .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 现在的问题是, onLocationChanged方法不会以给定的时间间隔(即5分钟或最快的间隔3分钟)被调用。 从日志中我可以看到,它只被调用两次或三次之后,根本没有被调用(我在1小时后检查)。 我的上面的代码是什么问题? (我也看不到任何“断开连接”的日志) 为了解决这个问题,我试图用alarmmanager来定期调用这个任务。 现在,如何通过来自广播接收机的Locationclient获取单个位置更新。 […]

你可以使用一个服务的LoaderManager?

我有一个数据加载系统build立使用自定义加载程序和游标,从活动和片段很好的工作,但没有LoaderManager(我可以find)在服务。 有谁知道为什么LoaderManager被排除在服务之外? 如果不是有解决这个问题的方法吗?

java.lang.RuntimeException:WakeLock被locking为C2DM_LIB

我已经上传我的应用程序谷歌播放,但用户已经报告了以下exception java.lang.RuntimeException:WakeLock被locking为C2DM_LIB 。 当我尝试释放WakeLock时会发生此exception。 任何人都可以告诉可能是什么问题。

Android广播接收器与服务

我正在尝试澄清android中广播接收机和服务的区别。 我明白,一个活动可以启动一个服务,通过意图调用startService 。 广播接收机可以在代码或清单中注册,并可以通过sendBroadcast 。 你什么时候使用一个和另一个? 我明白,多个广播接收机可以听同样的意图,这不是一个服务的情况。

在onStartCommand中传递Intent的原因是NULL

除了系统通过诸如START_STICKY的标志重新启动服务之外,是否有其他原因传递给onStartCommand(Intent, int, int)将为NULL? 此外,当系统重新启动服务时, Intent.getAction()方法有时会返回NULL …。 意图不是NULL只是getAction() 我也在这里问过,但还没有得到答案。 更新 :在与Mark Murphy聊天后,他build议我在服务中的onStartCommand()callback中返回START_REDELIVER_INTENT ,而不是START_STICKY以便重新启动后发送整个意图。 我最初并没有这样做,因为我担心如果服务试图做一些事情,那么在这个服务重新启动的过程中,它会认识到它开始做这个事情吗? 我想这是逻辑我将需要负责:)

PendingIntent不发送意图额外

我的MainActicity启动了一个带有一个名为isNextWeek的boolean额外的Intent RefreshService 。 我的RefreshService进行Notification ,当用户点击它时启动我的MainActivity 。 这看起来像这样: Log.d("Refresh", "RefreshService got: isNextWeek: " + String.valueOf(isNextWeek)); Intent notificationIntent = new Intent(this, MainActivity.class); notificationIntent.putExtra(MainActivity.IS_NEXT_WEEK, isNextWeek); Log.d("Refresh", "RefreshService put in Intent: isNextWeek: " + String.valueOf(notificationIntent.getBooleanExtra(MainActivity.IS_NEXT_WEEK,false))); pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); builder = new NotificationCompat.Builder(this).setContentTitle("Title").setContentText("ContentText").setSmallIcon(R.drawable.ic_notification).setContentIntent(pendingIntent); notification = builder.build(); // Hide the notification after its selected notification.flags |= Notification.FLAG_AUTO_CANCEL; notificationManager.notify(NOTIFICATION_REFRESH, […]

如何监视SIM状态变化

我希望能够做一些事情,当SIM卡状态改变,即播放声音时,需要SIM卡PIN,但我认为没有广播事件,可以拦截广播接收器为此…注册android.intent.action .PHONE_STATE只会告诉你什么时候CALL-STATE改变了。另一种方法是启动一个注册PhoneStateListener的服务,并在LISTEN_SERVICE_STATE时作出反应(当状态是Out-of-state时,它可以获得SIM状态,并查看状态是否为SIM_STATE_PIN_REQUIRED)。 所以,我的问题是: 1)是否有任何广播意图可用于拦截SIM状态更改或服务状态更改? 2)在PhoneStateListener接收到电话状态变化的通知后,在服务中安装PhoneStateListener并使用它传递意图给服务本身是一个坏主意?