有意地运行外部后台服务

时间:2011-08-21 14:38:20

标签: android android-intent

目前我有一个空白服务,最终将用于确定是否已购买许可证,此服务位于外部应用程序中,其唯一的工作是检查,并验证许可证(外部应用程序:com.example .myapp.licence,主要应用:com.example.myapp)

com.example.myapp.licence> LicenceService.java:

public class LicenceService extends Service {

   @Override
   public IBinder onBind(Intent intent) {
      return null;
   }

   @Override
   public void onCreate() {

   }

   @Override
   public void onStart(Intent intent, int startid) {

   }
}

com.example.myapp.licence>的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.myapp.licence"
      android:sharedUserId="com.example.myapp"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="4" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".My3DroidPaidLicenceActivity"
                  android:label="@string/app_name">
        </activity>
    <service android:enabled="true" android:name=".LicenceService" />
    </application>
</manifest>

但是当我的主应用程序中使用以下内容调用时,此服务强制关闭...

com.example.myapp&gt; MainActivity.java:

 Intent intent = new Intent();
    intent.setClassName("com.example.myapp.licence", "com.example.myapp.licence.LicenceService");

    List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

    if (list.size() > 0) {
        startActivity(intent);
    }

有人可以建议为什么会这样吗?

(如果我没有解释得很好,我很抱歉)

1 个答案:

答案 0 :(得分:2)

替换

    List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

if (list.size() > 0) {
    startActivity(intent);
}

startService( intent );