0

可能重复:
尝试在 Android 上启动服务

广播接收器

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class StartActivityAtBoot extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
            Intent i = new Intent(context, CompareIMSI.class);
            context.startService(i);
        }
    }
}

比较SIM.java

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.IBinder;
import android.telephony.TelephonyManager;
import android.widget.Toast;

public class CompareIMSI extends Service{

    Context context;
    TelephonyManager operator;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
        //compareSIM();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
        compareSIM();
    }

    public void compareSIM(){

        final String STORAGE = "Storage";
        SharedPreferences unique = getSharedPreferences(STORAGE, 0);
        final String storedIMSI = unique.getString("simIMSI", "");
        final String currentIMSI = getSubscriberId().toString();

        if (!storedIMSI.equals(currentIMSI)){
            Intent i = new Intent(CompareIMSI.this, ScreenLockActivity.class);
            startActivity(i);
        }
    }

    public String getSubscriberId(){

        String IMSI = null;
        String serviceName = Context.TELEPHONY_SERVICE;
        TelephonyManager m_telephonyManager = (TelephonyManager) getSystemService(serviceName);
        IMSI = m_telephonyManager.getSubscriberId();
        return IMSI;
    }
}

我希望应用程序在启动时启动 compareSIM 服务,在启动过程中,此服务将运行,因为当前连接的 SIM 卡 IMSI 将被检索并与已保存的 IMSI 匹配,一旦它们不同,用户将被带到登录布局。我想在启动过程中执行此操作,但未能执行...请在编码方面给我建议,谢谢

4

3 回答 3

2

按照以下步骤在 BOOT 上说明您的服务:

第 1 步:在 AndroidManifest.xml 中添加 BOOT_COMPLETED 权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

第 2 步:在 AndroidManifest.xml 中将您的 Reciver 注册为:

<receiver android:name=".StartActivityAtBoot" android:label="@string/app_name"> 
    <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</receiver>

第 3 步:在 AndroidManifest.xml 中将您的服务注册为:

<service android:name=".CompareIMSI"> </service>

第 3 步:在 StartActivityAtBoot 中启动您的服务:

    public class StartActivityAtBoot extends BroadcastReceiver
{
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";
    public void onReceive(Context context, Intent intent) 
    {
        if (intent.getAction().equals(ACTION)) 
        {
                  context.startService(new Intent(context, 
                  CompareIMSI.class), null);
             Toast.makeText(context, "CompareIMSI service has started!", Toast.LENGTH_LONG).show();
        }
    }
}

这都是关于在启动时启动服务。谢谢

于 2012-05-21T16:58:51.630 回答
0

您需要在 Android 清单中注册 BroadcastReceiver,如下所示:

<receiver android:name=".StartActivityAtBoot">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

还要确保您在清单中具有此权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
于 2012-05-21T16:50:13.360 回答
0

检查您的 androidManifest 文件。您需要在 androidManifest 文件中添加接收器。

  <receiver android:name=".......StartActivityAtBoot" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </receiver>
于 2012-05-21T16:53:45.313 回答