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" >
解決済み
マニフェストのパッケージ名の先頭にあるピリオドを削除すると、別の言葉で動作しました:
これは機能しません:
.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"を設定していない場合)。
デフォルトはありません。名前を指定する必要があります。
サービスはManifestにも含まれている必要があります。
<service Android:name="com.x.x.serviceclass"></service>
サービス名にそのパッケージのような名前を使用している理由がわかりませんが、サービスの開始にクラス名を使用しないのはなぜですか?
Intent intent = new Intent(context, YourService.class);
context.startService(intent);
あなたのパッケージ名はconnections
だと言ったので、サービスのマニフェストパッケージ名は間違っていると思いますので、このようにする必要があります
Android:name ="connections.MoodyService"
または
Android:name="com.example.moody.connections.MoodyService"
サービスを呼び出すには
Intent intent = new Intent(this, MoodyService.class);
this.startService(intent);
マニフェストファイルでサービスを宣言していることを確認してください。
<service
Android:name=".MyService"
Android:enabled="true" >
</service>
「this」キーワードの代わりにgetApplicationContext()を書いてみてください
startService(new Intent(getApplicationContext(), MoodyService.class));
私のサービスは「サービス」パッケージにあり、私のマニフェストサービスは次のようになっています。
<service
Android:name="service.TimerService"
Android:exported="false" >
</service>
サービスに空のコンストラクターを作成しましたか?
そうでない場合は、それを試してください。
また、そのようなインテントを使用できるかどうかも不明です。 「新しいInten(this、MoodyService.class)」構築を試すことができます。