2016-01-26 24 views
1

當服務代碼位於與主應用程序的MainActivity不同的包中的另一個包中時,我似乎無法啓動我的android服務。從不同的包中啓動Android服務

我已經嘗試了很多很多方法,即使是AIDL方法,我也無法得到它的工作。

MainActivity代碼

ServiceIntent.setComponent(new ComponentName("com.service.luna","com.service.luna.VService")); 
bindService(ServiceIntent, mServiceConnection, Context.BIND_AUTO_CREATE); 

MainActivty艙單

<?xml version="1.0" encoding="utf-8"?> 

<!-- <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> This is set from Gradle --> 
<!-- Needed for camera passthrough --> 
<!--<uses-permission android:name="android.permission.CAMERA" />--> 
<!-- Needed to write thumbs --> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<!-- Needed to for volume --> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<!-- Needed for Google Play Services GPS --> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.usb.host" /> 
<!-- Needed for uploading crash reports --> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

<uses-feature android:glEsVersion="0x00030000" android:required="true" /> 
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" 
    android:hardwareAccelerated="true" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> 
    <meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only" /> 
    <!-- singleTask launchMode because we never want multiple copies of the app running, --> 
    <!-- but we might want to internally spawn other activities --> 
    <!-- Theme.DeviceDefault.NoActionBar.Fullscreen gives solid black instead of a (bad stereoscopic) gradient on app transition --> 
    <activity android:name="com.main.luna.MainActivity" 
       android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 
       android:label="@string/app_name" 
       android:launchMode="singleTask" 
       android:screenOrientation="landscape" 
       android:configChanges="screenSize|orientation|keyboardHidden|keyboard" 
       > 
     <!-- this filter lets the apk show up as a launchable icon --> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <action android:name="com.service.luna.VService" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <service android:name="com.service.luna.VService" android:process=":VServiceRemote" android:exported="true" android:enabled="true"> 
     <intent-filter> 

      <action android:name="com.service.luna.VService"/> 
      <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/> 
      <action android:name="android.intent.action.USER_PRESENT" /> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </service> 

    <receiver android:name="com.main.luna.ConnectivityChangeReceiver" > 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
     </intent-filter> 
    </receiver> 

</application> 

服務代碼

public class VService extends Service implements Serializable{ 

....

服務清單

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.service.luna"> 

<application 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:supportsRtl="true"> 


</application> 

當我的代碼運行。最後,我收到

bindService callerProcessName:com.main.luna, calleePkgName: com.service.luna, action: null 
Unable to start service Intent { pkg=com.service.luna cmp=com.service.luna/.VService } U=0: not found 

主包的名稱爲com .main.luna,該服務位於com.service.luna

如果以前有人解決過這個問題,請告訴我。

+0

我解決了這個遲緩.....這是谷歌的Android的研究與開發。我不得不在主活動包中啓動這個意圖,如 ServiceIntent.setComponent(new ComponentName(「com.main.luna」,「com.service.luna.VService」)); – Perjia

回答

0

嘗試啓用您的清單導出選項,同時增加服務(機器人:出口=「真」)

<service android:enabled=["true" | "false"] 
    android:exported=["true" | "false"] 
    android:icon="drawable resource" 
    android:isolatedProcess=["true" | "false"] 
    android:label="string resource" 
    android:name="string" 
    android:permission="string" 
    android:process="string" > 
. . . 
    </service> 

,並確保您使用的包名稱的正確名稱

還要檢查這個帖子有類似的情況

How do I start a service which is defined in a different package?

+0

如果您查看了main清單中的服務標籤,它已經在那裏。不起作用。 – Perjia

+0

也許問題出在你的服務代碼中,阻止它啓動 –

+0

我在使用服務代碼的一段時間,並且在我決定將它移動到另一個包以使其更多模塊之前它正在工作。我只是想知道這個問題的解決方案。我無法在任何地方找到解決方案。 – Perjia