से शुरू नहीं होता मुझे पता है कि इस सवाल से कई बार पूछा गया है, लेकिन अन्य सभी धागे ने मेरी समस्या का समाधान नहीं किया है, मुझे अपने कोड में कुछ भी गलत नहीं दिख रहा है। शायद मैं यहाँ कुछ याद किया, क्या कोई मेरी मदद कर सकता है?Android IntentService
आशय सेवा के लिए कोड:
package Services;
import android.app.IntentService;
import android.content.Intent;
import android.widget.Toast;
public class WifiSearchService extends IntentService {
/**
* A constructor is required, and must call the super IntentService(String)
* constructor with a name for the worker thread.
*/
public WifiSearchService() {
super("WifiSearchService");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent,flags,startId);
}
/**
* The IntentService calls this method from the default worker thread with
* the intent that started the service. When this method returns, IntentService
* stops the service, as appropriate.
*/
@Override
protected void onHandleIntent(Intent intent) {
// Normally we would do some work here, like download a file.
// For our sample, we just sleep for 5 seconds.
long endTime = System.currentTimeMillis() + 5*1000;
while (System.currentTimeMillis() < endTime) {
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
}
}
}
एक स्विच flicking द्वारा सेवा शुरू:
package com.cdobiz.wifimapper;
import Services.WifiSearchService;
import android.os.Bundle;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Switch;
public class MainActivity extends Activity {
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
setContentView(R.layout.activity_main);
Switch serviceSwitch = (Switch) this.findViewById(R.id.switchService);
serviceSwitch.setChecked(isMyServiceRunning());
serviceSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton view, boolean state) {
if(state){
startService(new Intent(context, WifiSearchService.class));
}else{
stopService(new Intent(context, WifiSearchService.class));
}
}
});
}
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
Log.v("debug", service.service.getClassName());
if ("com.cdobiz.wifimapper.services.WifiSearchService".equals(service.service.getClassName())) {
return true;
}
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
मैनिफ़ेस्ट:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cdobiz.wifimapper"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.cdobiz.wifimapper.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:enabled="true" android:name=".services.WifiSearchService"></service>
</application>
</manifest>
.services पैकेज में WifiSearchService है? यदि ऐसा नहीं है तो आपको। सेवा को हटा देना चाहिए। अगर यह सेवा नहीं मिल पाती है तो यह इसे शुरू नहीं करेगी, और यह कोई संकेत नहीं देता है कि यह इसे नहीं मिल सकता है, जो कि कष्टप्रद है। – Mgamerz
हां, यह सेवाओं नामक पैकेज के अंदर है। – thedjaney
मैं यह देखने के लिए लॉग इन कथन का एक गुच्छा फेंक दूंगा कि यह वास्तव में उस कोड तक पहुंच रहा है जो इसे लॉन्च करता है। सुनिश्चित नहीं है कि आपने अभी तक कोशिश की है क्योंकि आपका कोड इसे प्रदर्शित नहीं करता है। इसके अलावा आप पैकेज को सेवाओं के रूप में घोषित करते हैं, लेकिन मैनिफेस्ट इसे सर्विसेज के रूप में दिखाता है - क्या इसे पूंजीकृत किया जाना चाहिए? – Mgamerz