3

Android の盗難防止アプリケーションを開発しており、連絡先のバックアップ機能を実装したいと考えています。私は Android の専門家ではなく、まったく新しいので、連絡先の名前と電話番号を取得する単純なコーディングを実装し、これらすべてを文字列メッセージに添付してメールで送信するだけです。これをアプリケーションのサービスの 1 つにしたいと考えています。つまり、ユーザーにはこのバックアップ連絡先サービスが通知されません。私はこの機能をアプリケーションとして独立して実行しましたが、動作します。しかし、これをサービスとして盗難防止アプリに移動すると、機能しません...問題を確認するために、みんなの助けが必要です...ありがとう...

public class BackupContacts extends Service{
/** Called when the activity is first created. */

    String msg = "**********Backup Phone Contacts**********\n\n";
    SharedPreferences pref;
    public static String filenames = "AntiTheft";
    String email;

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

@Override
public void onCreate(){
    // TODO Auto-generated method stub
    pref = getSharedPreferences(filenames, 0);
    email = pref.getString("keyemail", "");
    super.onCreate();
}

@Override
public void onStart(Intent intent, int startId){
    // TODO Auto-generated method stub
    super.onStart(intent, startId); 
}

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

    retrieveContacts();
    return START_STICKY;
}

public void retrieveContacts(){

    ContentResolver cr = getContentResolver();
    Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

    while(cursor.moveToNext()){
        String name = cursor.getString(cursor.getColumnIndexOrThrow(Phone.DISPLAY_NAME));
        String number = cursor.getString(cursor.getColumnIndexOrThrow(Phone.NUMBER));

        msg += name + "\t\t\t\t\t" + number + "\n";         
    }

    try{
        sendMail();
    } catch(MessagingException e){
        e.printStackTrace();
    }
}

public void sendMail() throws MessagingException{

    // Recipient's email ID needs to be mentioned.
    String to = email;
    // Sender's email ID needs to be mentioned
    String from = "testing@gmail.com";
    // Email Password
    String password = "abc123";
    // Assuming you are sending email from GMail SMTP
    String host = "smtp.gmail.com";

    // Get system properties
    Properties properties = System.getProperties();
    // Setup mail server
    //properties.setProperty("mail.smtp.host", host);
    properties.put("mail.smtp.host", host);
    properties.put("mail.smtps.auth", "true");
    properties.put("mail.smtp.starttls.enable", "true");

    // Get the default Session object.
    Session session = Session.getDefaultInstance(properties, null);

    // Create a default MimeMessage object.
    MimeMessage message = new MimeMessage(session);
    // Set From: header field of the header.
    message.setFrom(new InternetAddress(from));
    // Set To: header field of the header.
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    // Set Subject: header field
    message.setSubject("This is the Backup Contacts Email!");
    // Now set the actual message
    //message.setText(msg.toString());

    //BodyPart always come along with MultiPart (For sending attachment in email)
    //Create the message part
    BodyPart msgBodyPart = new MimeBodyPart();
    //Fill up the message
    msgBodyPart.setText(msg);

    //Create a multipart message
    Multipart multipart = new MimeMultipart();
    //Set the text message part
    multipart.addBodyPart(msgBodyPart);
    //Set the complete message part
    message.setContent(multipart);

    // Send message
    //Transport.send(message);
    try{
        Transport transport = session.getTransport("smtps");
        transport.connect(host, from, password);
        transport.sendMessage(message, message.getAllRecipients());
        System.out.println("Sent message successfully....");
        transport.close();
    }catch (MessagingException mex) {
        mex.printStackTrace();
    }
}
}
4

1 に答える 1

1

でこのクラスをサービスとして宣言しましたManifest.xmlか?

タグ内<application>に、次のコードを挿入します。

<service android:name=".BackupContacts" />
于 2012-10-29T15:29:07.410 に答える