web-dev-qa-db-ja.com

サービス意図を開始できません:見つかりません

here と同じ問題を説明しましたが、何が間違っているのか理解できません。

私の問題は:サービスを開始できないIntent {act = .connections.MoodyService} U = 0:見つかりません

[〜#〜] edit [〜#〜]パッケージで接続からサービスに変更しましたソースコード、混乱をおかけして申し訳ありません

manifest.xml

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.moody"
Android:installLocation="auto"
Android:versionCode="0"
Android:versionName="0.6.7 alpha" >

<uses-sdk
    Android:maxSdkVersion="18"
    Android:minSdkVersion="14"
    Android:targetSdkVersion="17" />

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />

<application
    Android:allowBackup="true"
    Android:allowClearUserData="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >
    <activity
        Android:name="activities.MainActivity"
        Android:label="@string/app_name" >
    </activity>
    <activity
        Android:name="activities.Menu_esq"
        Android:label="@string/title_activity_menu_esq" >
    </activity>
    <activity
        Android:name="activities.BaseActivity"
        Android:label="@string/title_activity_base" >
    </activity>
    <activity
        Android:name="activities.MainView"
        Android:label="@string/title_activity_main_view" >
    </activity>
    <activity
        Android:name="activities.LoginActivity"
        Android:label="@string/app_name"
        Android:noHistory="true"
        Android:windowSoftInputMode="adjustResize|stateVisible" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        Android:name="com.example.moody.LeftActivity"
        Android:label="@string/title_activity_left" >
    </activity>
    <activity
        Android:name="com.example.moody.RightActivity"
        Android:label="@string/title_activity_right" >
    </activity>
    <activity
        Android:name="activities.UserDetailsActivity"
        Android:label="@string/title_activity_user_details" >
    </activity>
    <activity
        Android:name="fragments.TopicsPreview"
        Android:label="@string/title_activity_copy_of_topics_preview" >
    </activity>
    <activity Android:name="activities.Loading" >
    </activity>

    <service
        Android:name=".service.MoodyService"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/moody_service" >
    </service>
</application>

serviceはパッケージで、MoodyServiceはクラス名です

私のサービスクラス

public class MoodyService extends Service {

public MoodyService() {
    // TODO Auto-generated constructor stub
}

private boolean isRunning = false;
Object getContent;

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub

    return null;
}

@Override
public void onCreate() {
    super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);

    // Announcement about starting
    Toast.makeText(this, "Starting the Demo Service", Toast.LENGTH_SHORT)
            .show();

    // Start a Background thread
    isRunning = true;
    Thread backgroundThread = new Thread(new BackgroundThread());
    backgroundThread.start();

    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();

    // Stop the Background thread
    isRunning = false;

    // Announcement about stopping
    Toast.makeText(this, "Stopping the Demo Service", Toast.LENGTH_SHORT)
            .show();
}

private class BackgroundThread implements Runnable {
    int counter = 0;

    public void run() {
        try {
            counter = 0;
            while (isRunning) {
                System.out.println("" + counter++);
                new Contents().getAll(getResources(),
                        getApplicationContext());
                Thread.currentThread().sleep(5000);
            }

            System.out.println("Background Thread is finished.........");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

そして、私の主な目的で。

Intent start = new Intent(".service.MoodyService");
        this.startService(start);

そしてまた試みた

Intent intent = new Intent(this, MoodyService.class);
        this.startService(intent);

、フルパスで試してみた

<service
    Android:name="com.example.moody.service.MoodyService"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/moody_service" >
29
firetrap

解決済み

マニフェストのパッケージ名の先頭にあるピリオドを削除すると、別の言葉で動作しました:

これは機能しません:

.yourPackage.YourClass

しかし、これは機能します:

 yourPackage.YourClass

そして主に:

Intent intent = new Intent(this, MoodyService.class);
        this.startService(intent);

しかし、それは ドキュメント で書かれていることに反します:

Android:nameサービスを実装するServiceサブクラスの名前。これは完全修飾クラス名(「com.example.project.RoomService」など)である必要があります。ただし、短縮形として、名前の最初の文字がピリオド(たとえば、「。RoomService」)の場合、要素で指定されたパッケージ名に追加されます。アプリケーションを公開したら、この名前を変更しないでください(Android:exported = "false"を設定していない場合)。

デフォルトはありません。名前を指定する必要があります。

26
firetrap

サービスはManifestにも含まれている必要があります。

<service Android:name="com.x.x.serviceclass"></service>

サービス名にそのパッケージのような名前を使用している理由がわかりませんが、サービスの開始にクラス名を使用しないのはなぜですか?

Intent intent = new Intent(context, YourService.class);
context.startService(intent);
4
SLee

あなたのパッケージ名はconnectionsだと言ったので、サービスのマニフェストパッケージ名は間違っていると思いますので、このようにする必要があります

  Android:name ="connections.MoodyService"

または

  Android:name="com.example.moody.connections.MoodyService"

サービスを呼び出すには

  Intent intent = new Intent(this, MoodyService.class);
    this.startService(intent);
2
Shakeeb Ayaz

マニフェストファイルでサービスを宣言していることを確認してください。

<service  
      Android:name=".MyService"  
      Android:enabled="true" >
</service>

「this」キーワードの代わりにgetApplicationContext()を書いてみてください

startService(new Intent(getApplicationContext(), MoodyService.class));
1
Anu

私のサービスは「サービス」パッケージにあり、私のマニフェストサービスは次のようになっています。

     <service
        Android:name="service.TimerService"
        Android:exported="false" >
    </service>
1
Habil

サービスに空のコンストラクターを作成しましたか?

そうでない場合は、それを試してください。

また、そのようなインテントを使用できるかどうかも不明です。 「新しいInten(this、MoodyService.class)」構築を試すことができます。

0
cYrixmorten