Android服务没有启动,没有警告

4

我有一个后台上传照片的服务,但当我尝试启动它时,它无法启动。在logcat中,我注意到收到了一个警告使用startService的隐式意图不安全:Intent { ...... }。我已经三次确认清单中的操作字符串与我正在启动的相同。我的代码:
清单:

<service android:name=".photosupload.services.PhtosUploadService" 
  android:exported="false" android:process=":uploadPhotosServiceProcess">
  <intent-filter>
    <action android:name="com.yoovi.app.photosupload.services.action.START_UPLOAD" />
  </intent-filter>
</service>

启动服务代码:

  Intent i = new Intent(PhtosUploadService.ACTION_START_UPLOAD);
  i.putExtra(PhtosUploadService.ALBUM_ID, albumID);
  context.startService(i);
2个回答

5
你需要了解隐式和显式意图。
显式意图指的是你需要指定intent所服务的确切class。
你的代码应该类似于:
    Intent i = new Intent();  
i.setClass(this, photosupload.services.PhtosUploadService.class);

为什么我不能隐式地启动它?我在另一个应用程序中做的事情完全一样,而且运行得很完美。 - RCB
1
你可以这样做,但是如果你使用startService,Android会发出警告:“使用startService的隐式意图不安全”。 - Madhur Ahuja
1
这是一个不同的问题,变量ACTION_START_UPLOAD的值是多少? - Madhur Ahuja
1
为什么不使用IntentService?http://developer.android.com/reference/android/app/IntentService.html - Madhur Ahuja
@MadhurAhuja,我也遇到了同样的问题,但是在另一个应用程序中却可以正常运行,我无法将其转换为显式意图。你能给我建议吗?先谢谢了! - Bipin Vayalu
显示剩余5条评论

0
如果您想向服务发送隐式意图 - 请在清单文件中更改为android:exported="true"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接