我试图使用BroadcastReceiver
和Service
将位置数据更新到Web数据库。Android 3.1+中的BroadcastReceiver问题
但是我很难在Galaxy Tab 7.0 Plus上使用Android 3.2。
相同的应用程序在Android 2.3.6 Galaxy Note上运行得非常好,但它不能在平板电脑上运行。实际上,我将RECEIVE_BOOT
intent动作添加到接收器,但它永远不会被实例化,也就是说,在引导完成后永远不会调用nReceive()
。我想知道是否有导致此操作的系统更新。
这里是我的xml和接收器类:
AndroidManifest.xml中
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tests.bootreceiver"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver
android:name=".BootUpReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service android:name=".MyService" >
</service>
</application>
BootUpReceiver.java
public class BootUpReceiver extends BroadcastReceiver {
private static int INTERVAL = 1000*15;
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), INTERVAL, pi);
}
}
在一个系统中是否有相同的代码工作原因并且不能在另一个系统上工作?
谢谢!
“现在你的应用程序应该能够从那时开始接收意图” - 或者直到用户强制 - 从设置中停止应用程序,此时您将回滚到与首次安装后相同的状态。 – CommonsWare 2012-07-31 17:19:29