نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • ایمنی
  • روشی برای محافظت در برابر کپی غیرمجاز فایل ها در ریشه فلش کارت برای کاربران سیستم عامل ویندوز. ریشه کارت حافظه کجاست

روشی برای محافظت در برابر کپی غیرمجاز فایل ها در ریشه فلش کارت برای کاربران سیستم عامل ویندوز. ریشه کارت حافظه کجاست

1. فایل نصب دستگاه را بارگذاری کنید SAS4Android.apk

2. اجازه نصب برنامه های شخص ثالث (نه از بازار) را در دستگاه خود (تلفن، تبلت و غیره) فعال کنید. این را می توان در تنظیمات دستگاه شما انجام داد: تنظیمات - امنیت - منابع ناشناس- کادر را علامت بزنید اجازه نصب برنامه های کاربردی از منابع ناشناخته(پس از نصب SAS4Android، این چک باکس را می توان بردارید). فایل را کپی کنید SAS4Android.apk به دستگاه خود و نصب آن را اجرا کنید.

3. فایل را اجرا کنید SAS4Android.apk .

4. در اولین شروع، پنجره ای ظاهر می شود که مسیر اصلی سی دی کارت را می خواهد و با شرایط استفاده موافقت می کند. مطبوعات خوب.همچنین، در اولین راه اندازی، پوشه کار برنامه به طور خودکار ایجاد می شود - SAS4Android و یک پوشه وجود دارد کار این پوشه کاری برنامه است که داده های لازم در آن ذخیره می شود. لطفا توجه داشته باشید که باید مشخص کنید مسیر به ریشهکارت های SD (و نه به هیچ پوشه دیگری) - این مهم است!

به طور پیش فرض، ساختار پوشه برنامه به صورت زیر است:

SD card_root / SAS4Android / work - پوشه کار - به طور خودکار ایجاد می شود.

SDcard_root / SAS4Android / cache - پوشه با کش - ایجاد شده توسط کاربر.

اگر از ساختار پوشه پیش فرض استفاده شود، برنامه به طور خودکار مسیرهای پوشه ها و فایل های مورد نیاز را شناسایی می کند. اگر از ساختار پوشه متفاوتی استفاده می شود، مسیرها باید به صورت دستی مشخص شوند. در دستگاه‌های دارای نسخه اندروید قبل از 4.3.x، توصیه می‌شود از ساختار پوشه پیش‌فرض استفاده کنید.

شما می توانید مسیر کارت را به روش زیر تعیین کنید: قبل از قرار دادن کارت SD در دستگاه، یک پوشه (در رایانه) روی آن ایجاد کنید. برای شما قابل درک استنام، برای مثال نام.
دستگاه را از رایانه جدا کنید، در غیر این صورت کارت SD در حالت ذخیره سازی برای اندروید و همه برنامه ها در دسترس نخواهد بود. (استفاده از برنامه MyPhoneExplorer برای برقراری ارتباط با رایانه راحت تر است، که به شما امکان می دهد اطلاعات دستگاه را از طریق رایانه ویرایش کنید و کارت SD برای همه قابل دسترسی است). هر فایل منیجر دستگاه خود را باز کنید و وارد شوید ریشه تریندایرکتوری دستگاه چندین دایرکتوری وجود خواهد داشت. با نگاه کردن به محتویات آنها، پوشه "خود" را در یکی از آنها پیدا کنید. مسیری که فایل منیجر نشان می دهد ریشهاین دایرکتوری همان چیزی است که شما نیاز دارید. آن را به خاطر بسپارید یا یادداشت کنید. در دستگاه ها و نسخه های مختلف اندروید، گزینه های مختلفی برای مکان و نام پوشه کارت SD امکان پذیر است. اگر پوشه ای هست mnt مثلا mnt / sdkard ، یا mnt / external_sd ، یا mnt / extSdkard ... در برخی از دستگاه ها، پوشه ها mnt ممکن است نباشد. در این مورد، پوشه نصب شده روی کارت معمولاً درست در ریشه دستگاه قرار دارد، به عنوان مثال: / سدکرد یا / اسدکارد1 یا / extSdkard ... در نسخه های اندروید 4 و بالاتر، معمولاً پوشه زیر یافت می شود: انبار / اسدکارد یا ذخیره سازی / Sdkard1 یا ذخیره سازی /external_sd یا ذخیره سازی / extSdkard .
بنابراین، فرض کنید ما مشخص کرده‌ایم که کارت SD ما به این صورت نصب شده است / mnt / خارجی ... این دقیقاً همان مسیری است که باید وارد کنید (یا بهتر است با باز کردن کادر گفتگوی فایل با دکمه [...] انتخاب کنید) در اولین راه‌اندازی برنامه قبل از ظاهر شدن منو.

ویژگی های راه اندازی در اندروید 4.4 و بالاتر

در اندروید 4.4 و بالاتر، حقوق برنامه برای نوشتن روی کارت SD حذف شد. اگر سازنده در حین مونتاژ سفت‌افزار را تصحیح نکرده باشد، برنامه روی دستگاه غیر روت نمی‌تواند روی کارت SD بنویسد. در این مورد، خود برنامه سعی خواهد کرد مکان دایرکتوری کاری را پیدا کند. به احتمال زیاد یک دایرکتوری در بخش داده های برنامه در حافظه داخلی (غیر ذخیره سازی) دستگاه خواهد بود.
در این صورت، برنامه کار می کند، داده ها در پوشه نوشته می شوند کار ، از آنجا بخوانید. اما کاربر از این فرصت برای برداشتن هر چیزی از پوشه محروم خواهد شد کار یا چیزی در آنجا قرار دهید البته در مورد دستگاه غیر روت شده صحبت می کنیم. اگر این وضعیت برای کاربر مناسب است، هیچ کار دیگری لازم نیست انجام شود. در غیر این صورت، شما باید با دستان خود کار کنید.
ما باید جایی را در دستگاه پیدا کنیم که برنامه بتواند داده ها را در آن بنویسد و ما می توانیم این داده ها را از آنجا بگیریم و در صورت لزوم خودمان را اضافه کنیم.
ما به طور تجربی موفق شدیم چنین مکانی را پیدا کنیم. مراحل نصب:

1. ما دستگاه را با یک کابل USB به کامپیوتر وصل می کنیم و در دایرکتوری ایجاد می کنیم حافظه داخلیپوشه داده ها ... یا در خود دستگاه همین کار را با استفاده از فایل منیجر انجام می دهیم. مسیر باید باشد ذخیره سازی / sdcard0 / داده ها ... داخل پوشه داده ها فایل را گذاشتیم .nomedia .
توجه! تمام تلاش ها برای ایجاد یک پوشه کار(قابل مشاهده و ویرایش در رایانه) در سایر مکان ها / پوشه های حافظه داخلی ناموفق... می توانید آن را ایجاد کنید و حتی زمانی که SAS4Android را برای اولین بار راه اندازی می کنید، می توانید مسیر پوشه مورد نظر را مشخص کنید. اما پس از نصب، دسترسی به این پوشه غیرممکن می شود. می‌توانید از طریق مدیر فایل دستگاه نگاه کنید، اما اضافه کردن چیزی (تراک‌ها، کلید مجوز جدید، پیکربندی‌های نقشه/لایه، و غیره) از کارت یا رایانه قابل جابجایی یا کپی کردن آن به کارت یا رایانه قابل جابجایی غیرممکن است.
چرا نام برای پوشه انتخاب شد؟ "داده ها" ? ترفند این است که با نام مطابقت دارد داده ها ، در اصطلاح استاندارد دستگاه پذیرفته شده است و علاوه بر آن اندروید حروف بزرگ و کوچک را تشخیص می دهد. در مجموع، سیستم اندروید این پوشه را متعلق به خود می داند و محتوای آن را در حقوق محدود نمی کند.

در اینجا یک راه آماده و اثبات شده برای دور زدن محدودیت های Android 4.4x وجود دارد. کاربر از آزمایش مکان و نام این پوشه منعی ندارد.

حالا پوشه ای که ساختیم ذخیره سازی / sdcard0 / داده ها به عنوان مسیری عمل می کند که باید در اولین شروع برنامه مشخص کنید.
2. در ریشه ایجاد کنید خارجیپوشه کارت SD SAS4Android ، و در این پوشه یک پوشه وجود دارد حافظه پنهان ... کش را آنجا قرار می دهیم. مسیر کش خواهد بود .
3. در اولین راه اندازی، برنامه مسیر اصلی کارت SD را می خواهد. مسیر پوشه ای که ایجاد کردیم را نشان می دهیم: ذخیره سازی / sdcard0 / داده ها ... در پوشه داده ها برنامه یک پوشه ایجاد می کند SAS4Android ، و در آن پوشه کار با یک مجموعه پایه استاندارد از فایل ها. اکنون تمام فایل های کاری برنامه در پوشه قرار خواهند گرفت ذخیره سازی / sdcard0 / Data / SAS4Android / کار و ما به آنها دسترسی خواهیم داشت.
4. اکنون باید مسیر کش را به برنامه بگویید، زیرا ما آن را با مسیر پیش فرض تفاوت داریم. برای این کار در برنامه در حال اجرا وارد کنید تنظیمات - دایرکتوری کش نقشهو با استفاده از محاوره فایل مسیر را مشخص کنید ذخیره سازی / sdcard1 / SAS4Android / کش .نصب تکمیل شد.
#!!! بررسی های متعدد نشان داده است که با این نصب SAS4Android در دستگاه های دارای اندروید 4.4.4، با به روز رسانی های بیشتر یا حتی حذف کامل و نصب مجدد برنامه، دایرکتوری ذخیره سازی / sdcard0 / داده ها کار باقی می ماند، محتوا کار گم نمی شود و نمی شکند، دسترسی به ویرایش کار هم از طریق دستگاه و هم از طریق کامپیوتر باز است. تست شده روی Sony Xperia Z و همچنین Z3 compact و WinXP / Win7.
#!!! که دایرکتوری کار کار مجبور است در حافظه داخلی دستگاه قرار گیرد، یک نکته مثبت قابل توجه وجود دارد - در صورت نقص / افتادن کارت SD در میدان، و این ممکن است برای هر کسی اتفاق بیفتد، شما فقط حافظه پنهان (به طور موقت) را از دست می دهید. و تراکلاگ و بقیه مطالب کار کامل باقی خواهد ماند و کار می کند.
مشاوره : همیشه داشتن یک ذخیره شدید مفید است - به صورت دوره ای، پس از ظاهر شدن آهنگ ها و نقاط مهم جدید، این اثر تغییر یافته را کپی / ذخیره می کنم کار به کارت SD در پوشه اصلی SAS4Android، در کنار حافظه پنهان ... آنجا کار، البته، کار نمی کند - این فقط یک ذخیره است. و ناگهان هیولا دچار اشکال می شود - سپس کارت در مورد بهبود نسبی کمک می کند.

#!!! در اندروید 4.4.x (اگر سازنده در هنگام مونتاژ سیستم عامل را تغییر نداده باشد) مبادله آنلاین نگاشت داده ها به کش بسته بندی نشده از سرویس های شخص ثالث با استفاده از اسکریپت های نوشته شده در جاوا اسکریپت، بدون روت فقط برای حافظه داخلی امکان پذیر است. برای بارگیری کش برخط علاوه بر این باید یک پوشه دوم ایجاد کنید حافظه پنهان در دایرکتوری کاری برنامه ذخیره سازی / sdcard0 / Data / SAS4Android / و از قبل تعداد مورد نیاز پوشه را با نام منابع نقشه ها / لایه ها و با اسکریپت های قرار داده شده در آن قرار دهید. شما باید بسته به نیاز فعلی خود به جابجایی بین دو دایرکتوری کش عادت کنید: کار بدون تعویض - با اصلی حافظه پنهان ، و با پمپاژ - ما به حافظه پنهان در حافظه داخلی

از منوی تنظیمات برنامه خارج شوید.

پس از شروع برنامه، خروج از منوی تنظیمات با فشار دادن دکمه سیستم "منو" انجام می شود. این می تواند یک دکمه سخت افزاری یا یک دکمه روی صفحه در پایین صفحه باشد ( سه نقطه عمودی). بسته به دستگاه شما و نسخه اندروید روی آن، این دکمه می تواند یک دکمه سخت افزاری یا یک دکمه روی صفحه در پایین صفحه باشد. در بسیاری از دستگاه های جدید با نسخه اندروید 4 و بالاتر، این دکمه با دکمه لیست برنامه های در حال اجرا ترکیب می شود ( دو مستطیل تراز شده). در این صورت برای خروج از منو کافی است را فشار دهید و نگه داریددکمه اجرای برنامه ها تا زمانی که منوی تنظیمات ظاهر شود.

ویژگی هایی برای روشن و خاموش کردن SAS4Android

هنگامی که برنامه را شروع می کنید، همه حالت ها روشن می شوند: نمایش نقشه ها، ناوبری، ثبت گزارش آهنگ (شروع یک سرویس). امکان خروج از برنامه (قرار دادن آن در حالت خواب) بدون توقف سرویس وجود دارد، یعنی. ضبط آهنگ آهنگ بسته به تنظیمات (حالت ضبط گزارش آهنگ، حالت توقف سرویس)، در صورت لزوم، برنامه دیگری را راه اندازی کنید، هنگام ذخیره سرویس در حال اجرا، تماس بگیرید یا به تماس پاسخ دهید، از یکی از دکمه ها استفاده کنید بازگشت، یا دکمه "خانه" به شکل خانه.

برای متوقف کردن سرویس، بسته به تنظیمات، روی دکمه "بازگشت" دوبار کلیک کنید یا "پرده" را پایین بیاورید، در لیست برنامه های در حال اجرا، روی خط کلیک کنید. SAS4Android، دکمه را فشار دهید متوقف کردن.

#!!! در تبلت ها، اغلب نوار وضعیت در پایین است. در سمت راست آن، نمادهای برنامه های در حال اجرا گروه بندی شده اند. اگر روی هر نمادی کلیک کنید، پنجره ای با یک خط کش با نمادهایی برای "پارامترهای سریع" (صدا، روشنایی وای فای، BT، شبکه، مکان، و غیره) ظاهر می شود و در زیر لیستی خط به خط در حال اجرا است. برنامه های کاربردی.

ویژگی های توزیع برنامه

برنامه SAS4Android رایگان توزیع می شود.

تاریخ انقضای برنامه - یادداشت نویسنده.

پس از نقض مکرر و مخرب حق چاپ توسط برخی از بازرگانان ناوبر ناصادق، نویسنده مجبور شد محدودیتی را ایجاد کند - پس از نصب (یا به روز رسانی بعدی) برنامه SAS4Android به مدت 1 ماه از تاریخ ارسال به روز رسانی به درستی کار می کند و سپس تا حدی "شکست" - پوسیده شدن... این در کاهش زمان ضبط مداوم تراکلاگ (معمولاً در عرض 20-30 دقیقه) بیان می شود که پس از آن ضبط متوقف می شود، پیام مربوطه روی صفحه ظاهر می شود. سپس تنها راه اندازی مجدد برنامه باقی می ماند (برنامه و سرویس را ببندید و دوباره شروع کنید). و به این ترتیب تعداد دفعات غیر قابل پیش بینی تا پایان سفر. در این مورد، آهنگ ها ضبط می شوند، اما با وقفه. یک راه حل ساده اما دردسرساز برای این مشکل، به روز رسانی منظم، یک بار در ماه است. هر به‌روزرسانی جدید تاریخ «محو» بعدی دارد، بنابراین به‌روزرسانی کنید و ادامه دهید...

اما یک راه بهتر وجود دارد.

این برنامه دارای یک الگوریتم برای حذف محدودیت است - کلید License.dat، که "محو" را غیرفعال می کند. نویسنده کلیدها را به نشانه قدردانی از کسانی که از پروژه حمایت کردند می دهد. بنابراین نپرسید «چقدر» یا «چگونه بخریم». به هر صفحه از انجمن بروید و سربرگ را از نزدیک ببینید.

کلید برای فروش نیست! کمک های مالی با ذکر کلید یا خرید در نظرات به فرستنده بازگردانده می شود.

برای تولید یک کلید، به یک فایل نیاز دارید deviceld.txt ... توسط خود برنامه SAS4Android تشکیل شده و در پوشه قرار می گیرد کار .

ابتدا بررسی کنید که فایلی در دستگاه شما وجود دارد. deviceld.txt وجود دارد.

اگر آنجا نباشد، نمی توانید کلیدی برای ناوبر خود ایجاد کنید (افسوس، برخی از مدل های به شدت کوتاه شده وجود دارد که این مکانیسم روی آنها کار نمی کند).

اگر فایلی دارید deviceld.txt خالی یا کار نمی کند (از نسخه قدیمی برنامه تا تنظیم مجدد کارخانه یا به روز رسانی سیستم باقی مانده است).

1. قدیمی را حذف کنید deviceld.txt .

2. برنامه را اجرا کنید.

3. منتظر گرفتن ماهواره ها هستیم (خط مختصات سیاه می شود).

4. برنامه را ببندید. یک شناسه معتبر باید در پوشه ظاهر شود کار .

به این واقعیت توجه کنیدکه کلید به شناسه دستگاه گره خورده است. در اندروید، نصب به‌روزرسانی سیستم، شناسه دستگاه را تغییر می‌دهد. این نیز نتیجه بازنشانی به تنظیمات کارخانه است. (چرا؟ از سازندگان دستگاه خود بپرسید).

بنابراین اگر سیستم را به‌روزرسانی کنید یا بازنشانی کارخانه‌ای انجام دهید، کلید کار نمی‌کند.

با این حال، با تغییر کلید می توان این مشکل را حل کرد. تمام سوالات در مورد رفع محدودیت ها را از نویسنده برنامه در پیام شخصی بپرسید.

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

مرحله شماره 1 - آماده سازی

فرمت کردن سیستم فایل رسانه در NTFS با استفاده از سیستم عامل.

بدون NTFS هنگام انتخاب گزینه های قالب بندی

اگر گزینه ای برای فرمت فایل سیستم در NTFS وجود ندارد، که در ویندوز XP وجود دارد، ما به صورت زیر عمل می کنیم:

  1. ما به ویژگی های درایو فلش می رویم.
  2. به تب "تجهیزات" بروید.
  3. فلش کارت ما را انتخاب کنید و روی دکمه خواص کلیک کنید.
  4. به برگه "خط مشی" بروید؛
  5. انتخاب گزینه استفاده از کش؛
  6. ما تغییرات و فرمت در NTFS را می پذیریم.
  7. سپس به «حذف سریع» برمی گردیم.

مرحله شماره 2 - تمایز حقوق

اکنون یک پوشه ("پوشه کاری") در ریشه ایجاد می کنیم و بلافاصله نامی را تنظیم می کنیم (در آینده تغییر نام پوشه غیرممکن است)، تمام اطلاعات در آن ذخیره می شود. اما ریشه پوشه فقط خواندنی خواهد بود. اکنون حقوق را متمایز می کنیم:
  1. ما وارد امنیت می شویم - ویژگی های درایو فلش، برگه "امنیت" را باز کنید.

    اگر چنین برگه ای وجود نداشته باشد، به صورت زیر عمل می کنیم

    1. به "گزینه های پوشه" در "کنترل پنل" بروید.
    2. در برگه view در لیست "پارامترهای اضافی"، پارامتر حاوی کلمات "دسترسی عمومی" و "(توصیه می شود)" را پیدا می کنیم.
    3. دم کرده را حذف می کنیم.
    اکنون تب ظاهر شده است
  2. روی دکمه "پیشرفته" کلیک کنید؛
  3. در پنجره ای که باز می شود، به تب "مالک" بروید و دکمه "تغییر" را فشار دهید.

    برای XP

  4. ما چک باکس "جایگزینی صاحب زیر کانتینرها و اشیاء" را قرار می دهیم.
  5. خودمان انتخاب می کنیم و مالک شی می شویم;
  6. جعبه های محاوره ای را به درخواست سیستم عامل با دکمه "OK" می بندیم و سپس دوباره "امنیت" و "پیشرفته" را باز می کنیم.
  7. مجوزها را تغییر دهید - برای این، به امنیت بروید و در برگه "مجوزها" روی دکمه "تغییر مجوزها" کلیک کنید، حقوق موجود را حذف کنید.

    برای XP

    (در ویندوز XP دکمه "تغییر مجوزها" وجود ندارد، ما بلافاصله در آنجا عمل می کنیم)

  8. گروه "همه" را اضافه کنید - دکمه های "افزودن"، "پیشرفته"، "جستجو" را فشار دهید، گروه "همه"، "OK"، "OK" را از لیست انتخاب کنید.
  9. در پنجره ای که باز می شود، تنظیمات مجوز را برای گروه "همه" تنظیم کنید:
    • "Apply to: برای این پوشه، زیرپوشه ها و فایل های آن"؛
    • چک باکس های زیر را در قسمت "مجوزها" تنظیم کنید:
      1. مجاز: "کنترل کامل"؛
      2. انکار: تغییر مالک، تغییر مجوزها، حذف، حذف زیرپوشه ها و فایل ها، نوشتن ویژگی های اضافی، نوشتن ویژگی ها، ایجاد پوشه ها / افزودن داده ها، ایجاد فایل ها / نوشتن داده ها.
  10. ما تغییرات را می پذیریم، به پوشه ایجاد شده قبلی در ریشه فلش کارت رفته و تقریباً همان عملیات را انجام می دهیم.
  11. تغییر مالکیت از یک الگوی آشنا پیروی می کند.
  12. حذف حقوق موجود با برداشتن علامت "افزودن مجوزهای به ارث رسیده از اشیاء والد" در برگه "مجوزها".
  13. در کادر محاوره ای که ظاهر می شود، "Delete" را انتخاب کنید.
  14. گروه "همه" را اضافه کنید (ما قبلاً می دانیم چگونه) و پارامترهای مجوز را تنظیم کنید:
    • "Apply to: برای این پوشه، زیرپوشه ها و فایل های آن"؛
    • چک باکس Allow را تنظیم کنید: "دسترسی کامل".
  15. دوباره گروه "Everyone" را اضافه کنید و پارامترهای مجوز را تنظیم کنید:
    • "اعمال: فقط برای این پوشه"؛
    • چک باکس‌های زیر را «رد کردن» در قسمت «مجوزها» تنظیم کنید:
      "تغییر مالک"، "تغییر مجوزها"، "حذف"، "نوشتن ویژگی های اضافی"، "نوشتن ویژگی ها"
طرفداران
+ هیچ راهی برای ایجاد / حذف فایل ها و پوشه ها در ریشه فلش کارت وجود ندارد. در نتیجه، راه گریز برای «رانندگان خودکار» بسته شده است.
+ در "پوشه کاری" دسترسی کامل - آنچه را که می خواهیم، ​​آن را برمی گردیم (خودتان استرس را وارد کنید).
+ سیستم فایل NFTS - برای استفاده شخصی مناسب است. (IMHO)
موارد منفی
- امکان استفاده از آیتم منوی "ارسال" برای کپی کردن اطلاعات در درایو فلش USB ما وجود ندارد، زیرا دایرکتوری ریشه برای نوشتن بسته است. باید در "پوشه کاری" کپی شود.
- راهی برای تغییر نام "پوشه کاری" وجود ندارد - در ریشه، فقط بخوانید.
- سیستم فایل NTFS - برای دستگاه هایی که فقط FAT می خوانند (پخش کننده های موسیقی / ویدئو، گوشی های هوشمند، دوربین های عکس و غیره) مناسب نیست.
ملاحظات
  • این عمل به بهترین وجه روی یک «ماشین سالم» انجام می شود. در غیر این صورت، می توانید immortal-autorun را ایجاد کنید.
  • در ویندوز XP، وقتی سعی کردم "پوشه کاری" را حذف کنم، باقی ماند (همانطور که باید باشد)، اما همه چیز داخل آن حذف شد.
  • اما در پنجره 7، زمانی که می خواهید "پوشه کاری" را حذف کنید، همه فایل ها باقی می مانند.
  • داخل "پوشه کاری" شما را از بدافزارهایی که هنگام باز کردن پوشه، یک exe "schnick" با نام پوشه ایجاد می کنند، نجات نمی دهد.

اطلاعات مختلف به صورت الکترونیکی را می توان در دستگاه خاصی به نام کارت حافظه ذخیره کرد. این برای ذخیره اسناد متنی، ضبط های صوتی و تصویری، تصاویر طراحی شده است. مزیت اصلی این نوع حافظه، سهولت در ثبت اطلاعات و فشرده بودن دستگاه در کنار حجم قابل توجهی از اطلاعات ذخیره شده است.

حافظه داخلی با RAM، حافظه دائمی و حافظه کش نشان داده می شود. از مزایای آن می توان به سرعت بالای عملکرد و نقطه ضعف آن در حجم محدود داده های ذخیره شده اشاره کرد.

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

کارت های حافظه استاندارد هستند. آنها بسته به نوع دستگاهی که در نظر گرفته شده اند، ابعاد کلی و محل قرارگیری پدهای تماسی مشخصی دارند.

این شامل لپ‌تاپ، تبلت، گوشی‌های هوشمند، دوربین‌های دیجیتال و حتی PSP با سایر کنسول‌های بازی می‌شود. بنابراین، برای کار صحیح با آنها، نمی توان بدون ایده روشنی از اینکه عبارت "ریشه کارت حافظه" به چه معناست و در کجا قرار دارد، انجام داد.

نام مکان ذخیره داده روی کارت از کلمه انگلیسی ریشه - "ریشه، ریشه" گرفته شده است، به معنای چیزی اولیه، اولیه. در همان ابتدا، زمانی که کامپیوترها شروع به ظهور کردند، مورد استفاده قرار گرفت. روی آنها، ریشه محتوای دستگاه نامیده می شد، یعنی مکانی که سیستم از آنجا شروع شد و داده ها در آن ذخیره می شدند. در واقع این نام گذاری با توجه به کارت های حافظه فعلی هیچ تغییری نکرده است.

دایرکتوری ریشه

امروزه خود دایرکتوری که روی کارت قرار دارد، ریشه کارت حافظه نامیده می شود. این همان پوشه ای است که با کلیک بر روی نماد کارت حافظه در گوشی هوشمند یا. فقط کلمه root کلمه به کلمه ترجمه شده است و اکنون همتای روسی آن است که برای نشان دادن خود کارت استفاده می شود. بنابراین، اگر از شما خواسته شد که داده‌ها را در ریشه کپی کنید، نیازی به ایجاد هیچ چیز اضافی روی کارت حافظه ندارید، بلکه فقط فایل‌های لازم را در خود آن، در دایرکتوری ریشه کپی کنید.

سپس Android Lollipop ظاهر شد و به همراه آن ویژگی های جدیدی برای کار با کارت SD ظاهر شد. ظاهر شد SAF(Storage Acces Framework)، یک Intent ACTION_OPEN_DOCUMENT_TREE جدید ظاهر شده است که با آن می توانید ریشه کارت SD را انتخاب کرده و سپس برای نیازهای خود از آن استفاده کنید. در واقع، SAF هنوز روی کیت کت بود، اما بدون این Intent، معنای کمی از آن وجود داشت، زیرا برای دسترسی به فایل‌های روی نقشه، باید از Intent ACTION_OPEN_DOCUMENT استفاده می‌کردید، که با قضاوت بر اساس نام، به کاربر اجازه می‌دهد فایلی را انتخاب کند. او می خواهد به صورت دستی از طریق انتخابگر سیستم ویرایش کند. خوب، اگر کاربر 5000 فایل داشته باشد، این کار را انجام می دهد؟ خیر

شناسایی دستگاه های ذخیره سازی خارجی در دستگاه شما

من با دردناک ترین موضوع کار با کارت حافظه شروع می کنم. ما یک روش فوق العاده در اندروید داریم.

File Environment.getExternalStorageDirectory ()

همانطور که از نام آن پیداست، این همان چیزی است که شما نیاز دارید. "خارجی" به معنای "خارجی" است، درست است؟ اما شما نباید به این روش تکیه کنید. می تواند مسیر را به حافظه داخلی بازگرداند، شاید به کارت، اما در هر دستگاه به طور متفاوتی اتفاق می افتد. این وضعیت تا حد زیادی به دلیل تولید کنندگان مختلف تلفن و سیستم عامل و پوسته های اصلاح شده آنها است. منظور من این است که متد getExternalStorage () می‌تواند مسیر را نه به کارت SD واقعی، بلکه به مسیری که سازنده آن را یک درایو خارجی می‌داند برگرداند. اینجاست که سردرگمی تعاریف به وجود می آید. یک درایو اکسترنال لزوماً یک درایو فلش نیست: در برخی از دستگاه ها حافظه داخلی است، در برخی دیگر در واقع یک کارت SD است. نقاط نصب نقشه می توانند هر کدام باشند:

  • / ذخیره سازی / extSdCard /
  • / ذخیره سازی / sdcard1 /
  • / ذخیره سازی / sdcard0 /
  • / mnt / external_sd /
  • / mnt / خارجی /
  • / mnt / sdcard2 /
  • / ذخیره سازی / sdcard0 /external_sdcard /
  • / ذخیره سازی / قابل جابجایی / sdcard1 /
  • / قابل جابجایی / microsd
  • / mnt / media_rw / sdcard1
  • / mnt / emmc

و این مشکل بزرگی نیست مگر اینکه خودتان با آن روبرو شوید.

موضوعات زیادی در StackOverflow وجود دارد که در آنها مجموعه ای از گزینه های بسیار متفاوت برای تعریف یک درایو فلش، از برشمردن همه ترکیبات ممکن از نقاط اتصال، تلاش برای دریافت متغیرهای محیط جاوا System.getenv ("EXTERNAL_STORAGE")، System.getenv (" SECONDARY_STORAGE") و با تجزیه فایل سیستم /system/etc/vold.fstab به پایان می رسد. این روش ها کار می کنند، اما هر کدام فقط در مواردی خاص. هیچ‌یک از این روش‌ها همه دستگاه‌ها را پوشش نمی‌دهد یا اصلاً کار نمی‌کند. و اگر به نظر می رسد که همه درایوها به درستی شناسایی می شوند، همیشه دستگاهی وجود خواهد داشت که کارت روی آن با این روش ها شناسایی نمی شود. تقریبا همه روش ها را امتحان کرده ام.

برای درک ابعاد مشکل، می گویم که حدود چهار ماه با آن برخورد کردم. این مشکل از سال 2011 وجود داشته است، اما هنوز راه حل دقیقی وجود ندارد. مدتی به این کد کم و بیش کار راضی بودم:

ArrayList allPaths = ArrayList جدید<>() ArrayList sdPaths = ArrayList جدید<>() برای (فایل فایل: mContext.getExternalFilesDirs ("خارجی")) (اگر (فایل == خالی) (ادامه؛) int index = file.getAbsolutePath (). lastIndexOf ("/ Android / data")؛ اگر (index> 0 ) (مسیر رشته = file.getAbsolutePath (). زیر رشته (0، فهرست)؛ امتحان کنید (مسیر = فایل جدید (مسیر) .getCanonicalPath ()؛) گرفتن (استثنا e) (e.printStackTrace ();) allPaths.add ( مسیر)؛ اگر (! file.equals (mContext.getExternalFilesDir ("خارجی"))) (sdPaths.add (مسیر)؛))

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

من توسط انتخابگر سیستم اندروید (همچنین یک مدیر فایل)، که در آن همه درایوها همیشه به درستی شناسایی می شوند، تسخیر شدم. بدون دوبار فکر کردن، apk سیستم را با استفاده از Root بیرون کشیدم و آن را دیکامپایل کردم.

روشنگری

متوجه شدم که انتخاب کننده از کلاس های StorageVolume و StorageManager استفاده می کند. روی تمام آیتم های StorageVolume بازیابی شده با استفاده از روش StorageManger.getVolumeList () تکرار می شود و روش های StorageVolume.getPath () و StorageVolume.getState () را برای هر کدام فراخوانی می کند. نکته این است که این روش ها پنهان هستند. آنها خصوصی نیستند، اما با حاشیه نویسی @hide مشخص شده اند. خوب، چه کاری می توانید انجام دهید، ما بازتاب خود را دریافت می کنیم:

StorageManager getStorageManager () (بازگشت (StorageManager) mContext.getSystemService (Context.STORAGE_SERVICE)؛) / * از بازتاب برای تشخیص همه حافظه ها استفاده کنید زیرا اندروید احتمالاً با USB-OTG فقط در API 19+ کار نمی کند * / لیست عمومی getAllPaths () (فهرست allPaths = ArrayList جدید<>() امتحان کنید (کلاسstorageVolumeClass = Class.forName ("android.os.storage.StorageVolume"); روش getVolumeList = getStorageManager (). GetClass () GetMethod ("getVolumeList"); روش getPath = storageVolumeClass.getMethod ("getPath"); روش getState = storageVolumeClass.getMethod ("getState"); شی getVolumeResult = getVolumeList.invoke (getStorageManager ()); طول int نهایی = Array.getLength (getVolumeResult); برای (int i = 0; i< length; ++i) { Object storageVolumeElem = Array.get(getVolumeResult, i); String mountStatus = (String) getState.invoke(storageVolumeElem); if (mountStatus != null && mountStatus.equals("mounted")) { String path = (String) getPath.invoke(storageVolumeElem); if (path != null) { allPaths.add(path); } } } } catch (Exception e) { e.printStackTrace(); } return allPaths; }

سوال اینجاست که چرا هیچ راه رسمی برای این کار وجود ندارد؟ بله، استفاده از بازتاب در یک پروژه جنگی کاملاً قابل اعتماد نیست، اما هیچ گزینه دیگری وجود ندارد: اگر خود سیستم از این کد استفاده کند، در همه موارد کار می کند. تمرین این را تایید می کند.

SAF (چارچوب دسترسی به فضای ذخیره سازی)

اسناد رسمی:

پلتفرم SAF به کاربران امکان می دهد اسناد، تصاویر و سایر فایل ها را در مخازن همه فروشندگانی که با آنها کار می کنند، پیدا کرده و باز کنند. یک رابط استاندارد و آسان برای استفاده به کاربران امکان می دهد فایل ها را بیابند و به فایل های اخیرا اضافه شده که در همه برنامه ها و فروشندگان سازگار هستند دسترسی داشته باشند.

p> SAF ارائه دهندگان محتوا را جمع می کند (زیر کلاس های DocumentProvider). به عنوان مثال، گوگل درایو، گالری های مختلف و مدیریت فایل ها هستند.

SAF URI اسناد (فایل) را می دهد که دارای مجوز نوشتن یا خواندن هستند. می توان گفت که این چنین لایه ای بالای دسترسی به فایل است. خود کلاس File چیزی در مورد SAF نمی داند.

p> برای اینکه بتوانید داده های کارت را ویرایش کنید، باید URI ریشه کارت SD را دریافت کنید که حق ویرایش را دارد. سپس با استفاده از این URI می توانید URI هر فایلی را که روی کارت حافظه وجود دارد را دریافت کنید. برای انجام این کار، باید انتخابگر سیستم را با استفاده از Intent ACTION_OPEN_DOCUMENT_TREE راه اندازی کنید و از کاربر بخواهید که ریشه کارت SD را انتخاب کند (در غیر این صورت هیچ چیز کار نخواهد کرد!).

در تصاویر:


@TargetApi (Build.VERSION_CODES.LOLLIPOP) void showDocumentTreeDialog () (intent intent = intent جدید (Intent.ACTION_OPEN_DOCUMENT_TREE)؛ startActivityForResult (Intent.createChooser (intent, getString_INQURING).

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

TakePersistableUriPermission (Uri uri، int modeFlags)

با پرچم هایی برای نوشتن و خواندن. پس از تمام این دستکاری ها، برای کار بیشتر با آن، به عنوان مثال، در SharedPreferences، باید کارت SD Uri دریافت شده را در جایی ذخیره کنید.

@RequiresApi (api = Build.VERSION_CODES.KITKAT) @Override void protected onActivityResult (Int requestCode، int resultCode، Intent data) (super.onActivityResult (RequestCode، resultCode، data)؛ if (requestCde == REQUEST_Cmissioner &PSDA) , data.getData ())) (// کارهای خود را انجام دهید)) @RequiresApi (api = Build.VERSION_CODES.KITKAT) takePermission بولی خصوصی (زمینه زمینه، Uri treeUri) (/ * اضافه کردن یک بررسی که URI ورودی یک URI نقشه است. من این کار را به عنوان تمرینی برای خوانندگان می گذارم * / امتحان کنید (اگر (treeUri == null) (return false;) context.getContentResolver (). takePersistableUriPermission (treeUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION_AG |REPERMISSION_AG |REPERMISSION_AG |RESEURI_PERMISSION_AG ؛ sharedPreferences.putString (SD_CARD_URI، treeUri.toString ()؛ بازگشت true؛) catch (E2.Exception) (e2.printStackTrace (؛ return false;))

تعامل با کارت SD

خواننده احتمالاً از قبل حدس می‌زند که ما نمی‌توانیم با فایل‌ها به صورت عادی تعامل داشته باشیم (مانند file.renameTo (file2)). اگر به کد روش file.renameTo (File) نگاه کنیم، هیچ چیز مشکوکی، بدون بررسی مشاهده نمی کنیم. و درست است، زیرا بررسی ها در سطح فایل سیستم هستند. و اگر بخواهیم با استفاده از ابزار معمول فایل موجود در کارت SD را تغییر دهیم، استثنای زیر را دریافت خواهیم کرد:

Java.io.IOException: نمی توان در فایل your_file.ext تغییراتی ایجاد کرد

در اینجا یک راه جالب برای تعیین اینکه آیا یک فایل را می توان تغییر داد وجود دارد:

بولین عمومی isFileWritable (فایل فایل) (قابل نوشتن بولی؛ امتحان کنید (FileOutputStream جدید (فایل، درست) .close ()؛ writable = file.exists () && file.canWrite ();) catch (IOException e) (قابل نوشتن = نادرست. ) بازگشت قابل نوشتن؛)

اگر فایل روی نقشه باشد، یک IOException دریافت خواهیم کرد.

برای تغییر یک فایل روی کارت حافظه، باید یک DocumentFile دریافت کنیم که نمایانگر فایل ما باشد، اما با مجوزهای نوشتن که با SAF دریافت کردیم.

در ابتدای این مقاله، من در مورد دو هدف برای SAF صحبت کردم: ACTION_OPEN_DOCUMENT_TREE و ACTION_OPEN_DOCUMENT. و من گفتم که ما از قصد دوم استفاده نخواهیم کرد، زیرا این کاربر را مجبور می کند تا فایل را به صورت دستی جستجو کند. اما ما URI را داریم که با استفاده از اولین هدف به دست آوردیم و این بدان معنی است که ... نه، هیچ API استانداردی برای دریافت DocumentFile وجود ندارد، همه چیز مدیریت می شود.

الگوریتم به شرح زیر است:

  1. ما فایل داریم
  2. نام درایوی که این فایل در آن قرار دارد را تعیین کنید
  3. ما مسیر فایل را نسبت به درایوی که در آن قرار دارد تعیین می کنیم. ما یک خط مانند دریافت می کنیم android / folder / file.txt
  4. خط را با علامت جدا کنید «/»
  5. در یک حلقه، برای هر بخش دریافتی، یک DocumentFile که نشان دهنده این مسیر است، بر اساس DocumentFile برای قسمت قبلی پیدا کنید.
  6. اگر الگوریتم بدون خطا تکمیل شود، یک DocumentFile در خروجی داریم که نمایانگر فایل ما است.

Public DocumentFile getDocumentFile (فایل فایل) (DocumentFile document = null; String baseFolder = null; for (مسیر رشته: getAllPaths ()) (File filePath = فایل جدید (مسیر)؛ if (filePath.getAbsolutePath (). StartsWith (file.getAbsolutePath) ())) (baseFolder = filePath.getAbsolutePath (؛ break;)) اگر (baseFolder == null) (null برگردانید؛) امتحان کنید (String relativePath = file.getCanonicalPath (). زیر رشته (baseFolder.length () + 1) ؛ Uri permissionUri = Uri.parse (sharedPreferences.getString (SD_CARD_URI))؛ document = getDocumentFileForUri (permissionUri، relativePath)؛) catch (Exception e) (e.printStackTrace ();) برگرداندن سند؛) / * روش دریافت DocumentFile ( مراحل 4-6) * / DocumentFile خصوصی getDocumentFileForUri (Uri treeUri، String relativePath) (String Parts = relativePath.split ("/")؛ if (parts.length == 0) (بازگردانی null؛) DocumentFile سند = DocumentFile.fromTreeUri (mContext، treeUri)؛ برای (بخش رشته: قطعات) (DocumentFile nextDocument = document.fi ndFile (بخش)؛ if (nextDocument! = null) (document = nextDocument;)) بازگشت سند; )

FileOutputStream outputStream = (FileOutputStream) mContentResolver.openOutputStream (documentFile.getUri ());

مثالی از کپی کردن فایل کلاس فایل در DocumentFile:

copyFile خالی عمومی (File sourceFile، سند DocumentFile) (FileInputStream inputStream = null؛ FileOutputStream outputStream = null؛ امتحان کنید (inputStream = FileInputStream جدید (sourceFile)؛ outputStream = (FileOutputStream) (FileOutputStream) (FileOutputStream) (FileOutputStream) (FileOutputStream) (FileOutputStream) (FileOutputStream) mContent. .getUriel ())؛ FileInputStream inputStream.getChannel () FileChannel fileChannelOut = outputStream.getChannel ()؛ fileChannelIn.transferTo (0، fileChannelIn.size ()، fileChannelOut؛ // noinspection ResultOfNethodCallceI; noinspection ResultOfMethodCallIgnored sourceFile.delete ();) در نهایت (اگر (inputStream! = null) inputStream.close ()؛ اگر (outputStream! = null) outputStream.close ();) گرفتن (IOException e) (e.printStackTrace ( ))))

و همچنین می خواهم بگویم که اکنون کد با چنین چک هایی پر می شود.

Public void writeFile (فایل فایل) (فایل بولین Writable = isFileWritable (فایل)؛ بولی hasSdCardUri =! SharedPreferences.getString (SD_CARD_URI) .isEmpty ()؛ if (fileWritable || hasSdCardUri) (/ *، می توانید فایل را به طور معمولی SAF ویرایش کنید * / return;) اگر (Build.VERSION.SDK_INT> = 21) (/ * خوش آمدید! (از کاربر اجازه می‌خواهد) * / NoLollipopWritePermissionException جدید را پرتاب کنید () در غیر این صورت (Build.VERSION.SDK_INT == 19) (/ * خداحافظ! (نمی توان ویرایش کرد) * / پرتاب NoKitkatWritePermissionException جدید ();))

نتیجه

امیدوارم تجربه من که در مقاله توضیح داده شده است به کسانی که هنوز با کارت SD کار نکرده اند کمک کند تا از تحقیق و جستجوی زیاد جلوگیری کنند.

پوشه ریشه فلش مموری یا کارت حافظه کجاست؟

    اگر هر دستگاه ذخیره سازی را به رایانه خود وصل کنید، در Explorer به عنوان یک درایو با یک حرف انگلیسی اختصاص داده شده ظاهر می شود، اگر این درایو را باز کنید، این پوشه ریشه خواهد بود. شما می توانید پوشه های دیگری را در آن ایجاد کنید، در هر یک از آن پوشه ها می توانید به نوبه خود پوشه های دیگری ایجاد کنید و غیره، و هر پوشه حاوی فایل است. این را می توان به عنوان یک درخت با یک تنه و شاخه های منشعب از آن تصور کرد - پوشه ها - شاخه ها، فایل ها - برگ ها، و ریشه این درخت دقیقاً پوشه ریشه است، از این رو نام آن است.

    ما پوشه ریشه را فقط پوشه فلش مموری یا کارت حافظه خاص می نامیم. به محض اینکه درایو فلش USB را وارد می کنید، دستگاه جدیدی در مقابل شما نمایش داده می شود که باز می شود، به پوشه ریشه درایو (به روت، یعنی به ابتدایی) منتقل می شوید که ممکن است حاوی یک دسته ای از پوشه های دیگر

    پوشه ریشه هر دیسک، پوشه اصلی آن دیسک است.

    یعنی وقتی در پوشه ریشه یک دیسک هستید، به نظر شما به نظر می رسد که به هیچ پوشه ای وارد نشده اید.

    یعنی آدرس پوشه root به صورت زیر است:

    درایوهای A: و B: معمولاً برای درایوهای فلاپی (برای فلاپی دیسک ها) رزرو می شوند که اغلب دیگر در رایانه های مدرن نصب نمی شوند.

    برای هارد دیسک، این معمولاً C است:

    D اغلب برای پخش کننده DVD رزرو می شود:

    بقیه معمولاً برای دستگاه های خارجی قابل اتصال استفاده می شوند.

    مثلا برای فلش مموری.

    اما این، به نظر من، لازم نیست به این ترتیب باشد. ممکن است شخصی در رایانه ترتیب متفاوتی از مطابقت دستگاه ها با نام دیسک ها داشته باشد. وارد بخش شوید کامپیوتر من(اگر ویندوز دارید) و خواهید دید که چگونه در ویندوز شما قرار دارد.

    پوشه ریشه سایت دارای آدرس زیر است: http: // sitename /

    اگرچه برای سازنده سایت، در میزبانی خود، همین پوشه اغلب فقط یک زیرپوشه است، زیرا می توان چندین سایت در آنجا ایجاد کرد، به علاوه تنظیمات پیکربندی مختلف ذخیره می شود.

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

    پوشه ریشه چیست و چگونه می توانم به آنجا برسم؟

    در واقع همه چیز بسیار ساده است، پوشه ریشه همان پوشه ای است که اصلی در نظر گرفته می شود. اگر مثلاً فلش USB خود را به دستگاه وصل کنید، یک منو ظاهر می شود که از طریق آن می توانید به پوشه root بروید = این خود فلش درایو است که در آن هم پوشه ها و هم فایل ها وجود دارد.

    اغلب می توانید این عبارت را بشنوید یا با آن روبرو شوید: quot؛ نصب / انتقال / کپی کردن یک فایل خاص در ریشه کارت حافظه یا پوشه ریشه فلش کارت؛. و پوشه ریشه چیست و کجاست یا فقط root درایوهای فلش؟

    پاسخ در واقع بسیار ساده است. این نام از دایرکتوری ریشه می آید. یعنی وقتی روی نماد کارت حافظه / فلش کارت کلیک می کنیم و پنجره ای جلوی ما باز می شود، این همان quot؛ root folder است. اگرچه در واقع folder ما آنجا را نمی بینیم. این منطقه خود نقشه با فایل های دیگر و پوشه های دیگری است که روی آن قرار داده شده است. پوشه ریشه (یا روت) فلش مموری را می توان با بالا floor در سلسله مراتب همه پوشه های روی آن.

مقالات مرتبط برتر