私が知っている、私はこの問題の最初のオンベではありませんが、私は非常に多くの解決策を試みました、私は見つけて誰もうまくいきません...多分あなたはエラーを見つけることができます
エラー(.classがなく、他の設定によっては/.Clientがある場合も同様です)
12-02 16:40:15.359:W/ActivityManager(74):サービスインテント{act = com.Android.fh.EnOceanApp.Client.class}を開始できません:見つかりません
マニフェストでは、これはアプリケーション外のアクティビティに含まれています(アクティビティ内でも ".Client"を使用して試しました)
OnCreate()のコード
startService(new Intent(this, Client.class));
または
startService(new Intent(this.getApplicationContext(), Client.class));
または
Intent intent=new Intent("com.Android.fh.EnOceanApp.Client.class");
this.startService(intent);
または
Intent intent=new Intent("com.Android.fh.EnOceanApp.Client");
this.startService(intent);
そして今、もうアイデアはありません.... com.Android.fh.EnOceanAppはパッケージ、Client.Javaはこのパッケージのサービスクラスです
そして私が忘れていたマニフェスト:
<application
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name" >
<activity
Android:label="@string/app_name"
Android:name=".EnOceanAppActivity" >
<intent-filter >
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity Android:name=".ListView"
Android:label="List View">
</activity>
<activity Android:name=".GraphView"
Android:label="Graph View">
</activity>
<service
Android:name=".Client"></service> //with and without ., of course without this comment
</application>
ですから、最終的には他の人を助けるかどうかだけです。
私は新しいプロジェクトを作成し、ソースをコピーして実行しようとしました。サービスが見つかりました。違いは何でしたか、つまり、パッケージ名が長いか、com.Android .。で始まるという問題が発生する可能性があります。新しいプロジェクトでは、com.enoceanを選択しました
ユーザーに感謝njzk2何が起こっているのか知らせてくれてありがとう。
同じ問題がありました。 Android OSは、プロジェクトのマニフェストファイルに以前に登録していない場合、リクエストしたサービスクラスを見つけることができません。
サービスはアクティビティのようなものですが、グラフィックインターフェースはありません。これは、サービスを使用する前に登録する必要があることを意味します
これは、Androidプロジェクトにサービスを登録する方法です。
<application>
<!-- your code -->
<activity>
<!-- your code -->
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service Android:name="com.your.own.service.class"></service>
</application>
YourServiceクラスはServiceから拡張する必要があることを忘れないでください。
public class YourService extends Service{}
場合によっては、ショートフォーム(.classname)を使用するのではなく、マニフェストでクラス名を完全に修飾する必要があります。別のパッケージのクラスを使用したときにそれが見られましたが、サービスインテントがアプリの外に移動する可能性があるため、おそらくここで役立つでしょう。
この投稿のすべての回答と関連する多くの サービスインテントを開始できません:見つかりませんサービスインテントを開始できません にもかかわらず、私はまだ苦労していて、取得するのにしばらく時間がかかりましたこれは行く。私が使用しているDIFFERENTアプリでサービスを開始しようとしているため、私のシナリオは少し複雑でした。私はそれを理解しました、そしてここにいくつかのボーナスコードとともにすべての詳細があります。
MainActivity呼び出しインテント(またはどこでも)
Intent intent=new Intent("com.example.core.MusicService.1234");
//Or Intent intent=new Intent("com.example.core.MusicService.TOGGLE_PLAYBACK");
PendingIntent pendingIntent = PendingIntent.getService(this, 99, intent, PendingIntent.FLAG_CANCEL_CURRENT);
サービスのマニフェスト:(アプリケーションタグ内のサービスタグ)
<service Android:name="com.example.core.MusicService">
<intent-filter>
<action Android:name="com.example.core.MusicService1234"></action>
</intent-filter>
<intent-filter>
<action Android:name="com.example.core.MusicService.TOGGLE_PLAYBACK"></action>
</intent-filter>
</service>
MusicService.Java
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(intent != null){
if(intent.getAction() != null){
if(intent.getAction().contentEquals("com.example.core.MusicService.TOGGLE_PLAYBACK")){
//Do work here
}
}
}
}
注意事項
クレジット:すべての投稿からの累積情報:)
誰かがこれを見て、私と同じ問題を抱えている場合は、ガイドに従ってcontext.startService()
の代わりにcontext.startActivity()
を使用したことが原因でした
まあ、私の場合、私はプロジェクトをきれいにしなければなりませんでした。パッケージ/プロジェクトでサービスの新しいJavaクラスを作成したが、あとでプロジェクトをビルド/クリーンアップしなかった場合に発生することがあります。私の場合、プロジェクトをクリーンアップしなければなりませんでしたエラーを取り除きます。
Androidのバカ間違いです
これは機能しません
<service
Android:name=".classname"/>
しかし、これは機能します、別個の終了タグがあります
<service
Android:name=".classname"></service>
マニフェストの別のタグにタグを追加するという愚かな間違いを犯しました。
その場合、現在のアプリケーションは定義されたサービスを見つけることができませんでした。
その間違いをスキップしてください:)
ありがとう。