1

SIMトラッキングでアプリを実行していますが、結果を取得できません

これが主な活動です

public class MainActivity extends Activity {

String FILENAME = "old_file.txt";
int simstatus;
String simNo;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        if (simstatus != TelephonyManager.SIM_STATE_ABSENT) {
            System.out.println("--------SIM Present:" + simstatus);
            simNo = tManager.getSimSerialNumber();
            FileOutputStream fos;
            try {
                fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
                fos.write(simNo.getBytes());
                System.out.println("---------Data written to files is:"
                        + simNo);
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

受信者

public class SimDataReciever extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()))  {   
            System.out.println("Reciever Started");
            Intent CompareSimServiceIntent = new Intent(context,demo.class); 
            context.startService(CompareSimServiceIntent);  
        }
    }
}

とサービス。

String FILENAME = "old_file.txt";

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

    public int onStartCommand(Intent intent, int flags, final int startId) {

         Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    //run your service

//                   Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
                    TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
                    try {
                        FileInputStream fis = openFileInput(FILENAME);
                        InputStreamReader in = new InputStreamReader(fis);
                        BufferedReader br = new BufferedReader(in);
                        String data = br.readLine();
                        System.out.println("---Data Read From File is:" + data);
                        String newsiminfo = tManager.getSimSerialNumber();
                        System.out.println("---New SIM no is:" + newsiminfo);
                        if (data.equals(tManager.getSimSerialNumber())) {
                            System.out.println("------Old sim Present:");
//                          Toast.makeText(this, "Old SIM", Toast.LENGTH_LONG).show();

                        } else {
//                          Toast.makeText(this, "New SIM", Toast.LENGTH_LONG).show();
                            SmsManager smsMngr = SmsManager.getDefault();
                            String destinationaddress = "8281306132";
                            String scAddress = null;
                            String text = "New Sim Is Inserted In Your Device";
                            PendingIntent sentIntent = null;
                            PendingIntent deliveryIntent = null;
                            smsMngr.sendTextMessage(destinationaddress, scAddress, text,
                                    sentIntent, deliveryIntent);
                            System.out.println("-----SMS Send");
                        }

                    } catch (Exception e) {

                    }
                }
            }, 1*60*1000);

        return startId;
    }

}

plsは私が解決策を見つけるのを助けます....

4

1 に答える 1

1

同じ種類のプロジェクトに取り組んでいるときに、同じような問題を見つけました。

また、デバイスの再起動後にシムを追跡できませんでした。ここで見つけた問題は、デバイスの再起動直後にシムトラッキングを呼び出していたことです。ただし、システムがリソースをロードするのに15〜20秒かかります。デバイスを再起動した直後にシムが起動しなかったため、レシーバーがシムを追跡できませんでした。

そのため、デバイスの再起動後、シミュレーションの追跡を20秒間遅らせました。シムの追跡を遅らせて、それが機能するかどうかを確認してください。

編集 -あなたのレシーバーはこのようになるはずです、

public class SimDataReciever extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
            System.out.println("Reciever Started");
            Log.d("BOOT COMPLETE","Receiver Called");
            Intent CompareSimServiceIntent = new Intent(context,demo.class); 
            context.startService(CompareSimServiceIntent);  
    }
}

マニフェストファイルで、コードをこれに置き換えます。

    <receiver android:name=".SimDataReciever" 
         android:enabled="true" 
         android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

ここで、メッセージがlogcatに表示されているかどうかを確認します。

于 2012-12-31T08:26:45.403 に答える