آموزش برنامه نویسی اندروید

آموزش ساختن برنامه برای اندروید به زبان فارسی
سه شنبه, ۳۰ مهر ۱۳۹۲، ۱۲:۴۸ ب.ظ

درک امنیت و اجازه ها (permission)

تماشای برخط [لینک مستقیم] فیلم آموزشی «درک امنیت و اجازه‌ها»

زیر نویس انگلیسی [English Subtitle]

دریافت نسخه pdf این آموزش [حجم ۶۶۱ کیلوبایت]

 ممکنه تا بحال موقع دانلود و نصب یه برنامه اندرویدی توی گوشیتون، به یه همچین پیغامی برخورده باشید که بهتون می‌گه این برنامه کاربردی که دارید نصب می‌کنید، به فلان مجوز نیاز داره. مثلا ممکنه بخواد به دوربین دستگاهتون دسترسی داشته باشه، و اونو اینطوری اعلام کنه: "همونطور که می‌دونید، این برنامه ای که در حال دانلود اون هستید، قراره به دوربین شما دسترسی داشته باشه، بنابراین بهتره به سازنده این برنامه اعتماد کنید".بنابراین اگر شما می‌خواید برنامه‌تون بتونه به چیزای مشخصی از دستگاه دسترسی داشته باشه، لازمه که به صراحت اعلام کنید که من برای استفاده از فلان امکانات مشخص، نیاز به مجوز دارم.

پس بذارید یه برنامه رو بررسی کنیم که بطور مشخص قراره باهاش وضعیت wi-fi دستگاه رو بررسی کنیم. می‌خوایم بدونیم که آیا wifi اتصال داره یا نه؟ یا در واقع آیا کاربر میتونه از طریق wifi به اینترنت وصل بشه یا نه؟

 

۱. اول یه پروژه جدید ایجاد می‌کنیم و به کلاس MainActivity.java می‌ریم.

۲.کاری که قراره انجام بدیم اینه که تو تابع onCreate تلاش کنیم به وضعیت wifi دسترسی داشته باشیم. در اینجا نیاز به ساختن یه نمونه از کلاس ConnectivityManager داریم که من اسمشو به اختصار، conman گذاشتم.

هر وقت نیاز داریم که سرویسی رو از سیستمی بگیریم، باید درخواست دسترسی به اون سرویس رو بدیم. برای این کار از تابع getSystemService استفاده می‌کنیم. بعدش فقط لازمه اسم اون سرویسی که می‌خوایم بهش دسترسی داشته باشیم رو وارد کنیم. که تو اینجا بهش از طریق یه ثابت ایستا که تو کلاس Context به نام CONNECTIVITY_SERVICE هست ارجاع میدیم.

ConnectivityManager conman = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

۳. حالا می‌خوایم، توی متنی که به صورت پیش فرض همه پروژه‌های جدید دارن، بنویسیم که آیا wifi متصل هست یا نه. و چون به صورت پیش فرض این فیلد متنی شناسه نداره به activity_main.xml می ریم و برای اون یه شناسه تعریف می‌کنیم.

نحوه تعریف کردن شناسه اینطوره که در فایل activity_main.xml، در تگ TextView می‌نویسیم "android:id="@id/matneman و چون این اولین باره که این شناسه رو تعریف می کنیم، یه علامت مثبت (+) هم کنار کلمه id می نویسیم، یعنی اینطوری:

android:id="@+id/matneman"

۴. تو تابع onCreate به متن‌مون داخل xml ارجاع میدیم.

TextView matn = (TextView) findViewById (R.id.matneman);

۵. اطلاعات مربوط به وضعیت wifi رو تو یه متغیر boolan به نام wifi می‌ریزیم. برای همین از کلاس ConnectivityManager استفاده می‌کنیم. تابع getNetworkInfo اطلاعاتی که بخوایم رو از شبکه می‌گیره. حالا برای ورودی این تابع باید اون اطلاعاتی که احتیاج داریم رو بدیم، ما الان به اطلاعات wifi احتیاج داریم پس ConnectivityManager.TYPE_WIFI رو به عنوان ورودی وارد می‌کنیم. چون در آخر نیاز به خروجی از نوع boolean (درست یا نادرست) داریم از تابع isConnectedOrConnecting استفاده می‌کنیم.

در صورتی که wifi دستگاه اتصال داشته باشه و یا در حال اتصال باشه، پیغام "wifi roshane" نمایش داده می‌شه.

boolean wifi =conman.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
if (wifi)matn.setText("wifi roshane!");
else
matn.setText("wifi khamooshe!");

۶. اگه برنامه رو اجرا کنیم، با این خطا موجه می‌شیم:

7. اگر وارد قسمت DDMS بشیم و LogCat رو بیاریم، میبینیم که مشکل یه استثنای امنیتیه! در واقع ما برای دسترسی به وضعیت شبکه، اجازه نگرفتیم.

8. این اجازه رو باید تو فایل AndroidManifest.xml ثبت کنیم. پس Manifest رو باز میکنیم، داخلش زبانه ی permission دیده میشه.

روی زبانه ی permission کلیک میکنیم و میخوایم به کاربر اعلام کنیم که آیا میتونیم به وضعیت شبکه دسترسی داشته باشیم یا نه؟

پس روی دکمه Add کلیک کرده و Uses Permission رو انتخاب میکنیم.

با انتخاب این گزینه، اعلام میکنیم که این برنامه به فلان اجازه احتیاج داره.

9. با زدن فلش جلوی Name میتونیم اسم همه ی اجازه هایی رو که ممکنه برنامه مون بهش نیاز داشته باشه ببینیم.

تو اینجا به Access_Network_State نیاز داریم.

10. حالا اگه زبانه ی AndroidManifest.xml رو بیاریم، میبینیم که یه خط بهش اضافه شده.

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

11. دوباره برنامه رو اجرا میکنیم تا ببینیم شبیه ساز چه متنی رو نشون میده.

میگه wifi خاموشه، چون تو ماشین شبیه ساز اینجا در واقع از اتصال شبکه ای من برای شبیه سازی شبکه ی داده های تلفن همراه استفاده میکنه، و این همون چیزیه که انتظارشو داشتیم.

فهرست مطالب

ادامه آموزش: اشکال‌زدایی (debugging) برنامه



نوشته شده توسط قلی نژاد
ساخت وبلاگ در بلاگ بیان، رسانه متخصصان و اهل قلم

آموزش برنامه نویسی اندروید

آموزش ساختن برنامه برای اندروید به زبان فارسی
آموزش برنامه نویسی اندروید
بسم الله الرحمن الرحیم
در این سایت آموزش جامع و کاملی درباره اینکه چطور برای اندروید برنامه بنویسیم قرار داده خواهد شد
امیدوارم این آموزش ها بتونه راه گشای تمام ایرانیانی باشه که می خوان تو این زمینه به موفقیت برسند و باعث افتخار کشورشون باشن
اساس آموزش این سایت، فیلم آموزشی از سایت Lynda.com هست
زیر نویس فارسی و انگلیسی این فیلم ها با پسوند srt برای دانلود قرار داده خواهد شد (گردآوری شده در این صفحه )
همون طور که می دونید این آموزش در سایت Lynda.com رایگان نیست.
برای همین اینجا و اینجا براتون آپلودش کردم
(حکم دانلود رایگان این فیلم ها که پولی هستند)

اگه هر کدوم از لینک هایی که گذاشتم کار نمی کرد حتما منو از طریق قسمت نظرات یا ایمیل مطلع کنید.
Email : AndroidCode@ymail.com

امام علی (ع) : هر عملی که با بسم الله الرحمن الرحیم شروع شود با برکت است.

آخرین نظرات

  • ۲ فروردين ۰۱، ۱۲:۱۱ - سعید حسین پور
    عالی ...

پیوندهای روزانه

درک امنیت و اجازه ها (permission)

سه شنبه, ۳۰ مهر ۱۳۹۲، ۱۲:۴۸ ب.ظ

تماشای برخط [لینک مستقیم] فیلم آموزشی «درک امنیت و اجازه‌ها»

زیر نویس انگلیسی [English Subtitle]

دریافت نسخه pdf این آموزش [حجم ۶۶۱ کیلوبایت]

 ممکنه تا بحال موقع دانلود و نصب یه برنامه اندرویدی توی گوشیتون، به یه همچین پیغامی برخورده باشید که بهتون می‌گه این برنامه کاربردی که دارید نصب می‌کنید، به فلان مجوز نیاز داره. مثلا ممکنه بخواد به دوربین دستگاهتون دسترسی داشته باشه، و اونو اینطوری اعلام کنه: "همونطور که می‌دونید، این برنامه ای که در حال دانلود اون هستید، قراره به دوربین شما دسترسی داشته باشه، بنابراین بهتره به سازنده این برنامه اعتماد کنید".بنابراین اگر شما می‌خواید برنامه‌تون بتونه به چیزای مشخصی از دستگاه دسترسی داشته باشه، لازمه که به صراحت اعلام کنید که من برای استفاده از فلان امکانات مشخص، نیاز به مجوز دارم.

پس بذارید یه برنامه رو بررسی کنیم که بطور مشخص قراره باهاش وضعیت wi-fi دستگاه رو بررسی کنیم. می‌خوایم بدونیم که آیا wifi اتصال داره یا نه؟ یا در واقع آیا کاربر میتونه از طریق wifi به اینترنت وصل بشه یا نه؟

 

۱. اول یه پروژه جدید ایجاد می‌کنیم و به کلاس MainActivity.java می‌ریم.

۲.کاری که قراره انجام بدیم اینه که تو تابع onCreate تلاش کنیم به وضعیت wifi دسترسی داشته باشیم. در اینجا نیاز به ساختن یه نمونه از کلاس ConnectivityManager داریم که من اسمشو به اختصار، conman گذاشتم.

هر وقت نیاز داریم که سرویسی رو از سیستمی بگیریم، باید درخواست دسترسی به اون سرویس رو بدیم. برای این کار از تابع getSystemService استفاده می‌کنیم. بعدش فقط لازمه اسم اون سرویسی که می‌خوایم بهش دسترسی داشته باشیم رو وارد کنیم. که تو اینجا بهش از طریق یه ثابت ایستا که تو کلاس Context به نام CONNECTIVITY_SERVICE هست ارجاع میدیم.

ConnectivityManager conman = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

۳. حالا می‌خوایم، توی متنی که به صورت پیش فرض همه پروژه‌های جدید دارن، بنویسیم که آیا wifi متصل هست یا نه. و چون به صورت پیش فرض این فیلد متنی شناسه نداره به activity_main.xml می ریم و برای اون یه شناسه تعریف می‌کنیم.

نحوه تعریف کردن شناسه اینطوره که در فایل activity_main.xml، در تگ TextView می‌نویسیم "android:id="@id/matneman و چون این اولین باره که این شناسه رو تعریف می کنیم، یه علامت مثبت (+) هم کنار کلمه id می نویسیم، یعنی اینطوری:

android:id="@+id/matneman"

۴. تو تابع onCreate به متن‌مون داخل xml ارجاع میدیم.

TextView matn = (TextView) findViewById (R.id.matneman);

۵. اطلاعات مربوط به وضعیت wifi رو تو یه متغیر boolan به نام wifi می‌ریزیم. برای همین از کلاس ConnectivityManager استفاده می‌کنیم. تابع getNetworkInfo اطلاعاتی که بخوایم رو از شبکه می‌گیره. حالا برای ورودی این تابع باید اون اطلاعاتی که احتیاج داریم رو بدیم، ما الان به اطلاعات wifi احتیاج داریم پس ConnectivityManager.TYPE_WIFI رو به عنوان ورودی وارد می‌کنیم. چون در آخر نیاز به خروجی از نوع boolean (درست یا نادرست) داریم از تابع isConnectedOrConnecting استفاده می‌کنیم.

در صورتی که wifi دستگاه اتصال داشته باشه و یا در حال اتصال باشه، پیغام "wifi roshane" نمایش داده می‌شه.

boolean wifi =conman.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
if (wifi)matn.setText("wifi roshane!");
else
matn.setText("wifi khamooshe!");

۶. اگه برنامه رو اجرا کنیم، با این خطا موجه می‌شیم:

7. اگر وارد قسمت DDMS بشیم و LogCat رو بیاریم، میبینیم که مشکل یه استثنای امنیتیه! در واقع ما برای دسترسی به وضعیت شبکه، اجازه نگرفتیم.

8. این اجازه رو باید تو فایل AndroidManifest.xml ثبت کنیم. پس Manifest رو باز میکنیم، داخلش زبانه ی permission دیده میشه.

روی زبانه ی permission کلیک میکنیم و میخوایم به کاربر اعلام کنیم که آیا میتونیم به وضعیت شبکه دسترسی داشته باشیم یا نه؟

پس روی دکمه Add کلیک کرده و Uses Permission رو انتخاب میکنیم.

با انتخاب این گزینه، اعلام میکنیم که این برنامه به فلان اجازه احتیاج داره.

9. با زدن فلش جلوی Name میتونیم اسم همه ی اجازه هایی رو که ممکنه برنامه مون بهش نیاز داشته باشه ببینیم.

تو اینجا به Access_Network_State نیاز داریم.

10. حالا اگه زبانه ی AndroidManifest.xml رو بیاریم، میبینیم که یه خط بهش اضافه شده.

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

11. دوباره برنامه رو اجرا میکنیم تا ببینیم شبیه ساز چه متنی رو نشون میده.

میگه wifi خاموشه، چون تو ماشین شبیه ساز اینجا در واقع از اتصال شبکه ای من برای شبیه سازی شبکه ی داده های تلفن همراه استفاده میکنه، و این همون چیزیه که انتظارشو داشتیم.

فهرست مطالب

ادامه آموزش: اشکال‌زدایی (debugging) برنامه

نظرات  (۱۷)

سلام. آقا واقعا دستتون درد نکنه. لذت بردم از مطلبتون.
ممنون.
سلام قربان
امکان درج تبلیغات در سایت شما وجود دارد ؟

پاسخ:
با سلام
فعلا نه
دمت گرم دادا ولی خود برنامش هم میزاشتی دیگه حرف نداشت
۰۴ آبان ۹۴ ، ۰۱:۰۱ طراحی سایت
سلام خیلی مفید بود
واقعا کارتون حرف نداره
دم شما ولرم
لطفا ادامه بدین
خیلی ممنون

داداش خسته نباشی.ادامه بده خدایی حرف نداری.عااااااااااااااالیه

شما مضخرف ترین سایت هستید  اینم شد زیر نویس خیلی بد بود یعنی روحیه ی ادم رو میگیرید از شما بدم میاد .

سایتتون عالیه
مرسی
ذدئرئدرذ
بعضی از این عکسا بالا نمیان لطفا درستشون کنین
پاسخ:
همین الان بررسی کردم عکسا درست هستند
با سلام و تشکر
پس آموزش های بعدی؟؟
پاسخ:
سلام، می تونید از اینجا ببینید.
سلام حالا چجوری تبدیل به پکیج apk کنیم؟
پاسخ:
تو فولدر bin مربوط به محل ذخیره برنامه تون یه فایل apk با همون اسم پروژه ای که ساختید وجود داره، هر بار که برنامه رو اجرا کنید، این فایلم آپدیت میشه.
میتونید این فایل رو تو بریزید تو گوشی و نصبش کنید، و نیازی نیست که خودتون پروژه رو تبدیل به apk کنید.
با زبان بی زبانی ممنون!!!!
واقعا باریکلا
یه شماره حساب بده ازت حمایت کنیم :) از اون لینک پیوندهای روزانت هم کلی حال کردم.
پاسخ:
خواهش میکنم. وظیفه ست.
۱۶ آبان ۹۲ ، ۰۹:۲۴ سلام و تشکر
با سلام و تشکر بخاطر آموزشهای مفیدی که گذاشتین.
من برنامه نویس C# هستم و از طریق سایت شما در حال یادگیری آندروید هستم.
خواستم بدونم آموزش اتصال به Sqlite دیتابیس local و remote و در صورت امکان، نحوه اتصال به Sql Server یعنی ست کردن provider و همچنین کار با فایلهای روی حافظه رو چه موقع روی سایت قرار میدین؟؟؟
با تشکر
پاسخ:
سلام، فکر نمی کنم به این زودیا وقت بکنم، می تونید از این لینک ها برای شروع استفاده کنید:
http://www.linkedin.com/groups/Android-how-connect-android-SQL-86481.S.207910730
http://www.basic4ppc.com/android/forum/threads/connect-android-to-ms-sql-server-tutorial.13166/
http://stackoverflow.com/questions/18350843/service-to-connect-to-sql-server-with-android
http://stackoverflow.com/questions/18298798/newbie-android-developer-trying-to-connect-to-sql-server-2008
http://stackoverflow.com/questions/17826096/how-to-connect-android-application-to-sql-server-through-jbdc

سلام

خیلی ممنون  از سایت خوبتان

ولی چرا انقدر مطالب رو دیر دیر قرار میدهید؟

پاسخ:
سلام، وقت نمی شه واقعا!
بعد از مدت هااااااااااااااااااااااااااااااااااااااااااااااااا !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ولی خوب بود مرسی
پاسخ:
خواهش میکنم

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">