পিছনে কোড জোর করে বন্ধ বোতাম জটিল এবং অনথিভুক্ত হয়। আমি এটি ভারব্যাটিম পুনরুত্পাদন করব এবং তারপরে এটি একবারে এক টুকরো দিয়ে যাব।
private void checkForceStop() {
if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
// User can't force stop device admin.
updateForceStopButton(false);
} else if ((mAppEntry.info.flags&ApplicationInfo.FLAG_STOPPED) == 0) {
// If the app isn't explicitly stopped, then always show the
// force stop button.
updateForceStopButton(true);
} else {
Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
Uri.fromParts("package", mAppEntry.info.packageName, null));
intent.putExtra(Intent.EXTRA_PACKAGES, new String[] { mAppEntry.info.packageName });
intent.putExtra(Intent.EXTRA_UID, mAppEntry.info.uid);
intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mAppEntry.info.uid));
getActivity().sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null,
Activity.RESULT_CANCELED, null, null);
}
}
প্যাকেজের if
কোনও উপাদান কোনও ডিভাইস অ্যাডমিন কিনা তা প্রথম লাইনটি পরীক্ষা করে ( এটি সেটিংস অ্যাপ্লিকেশনের সুরক্ষা পৃষ্ঠায় ডিভাইস প্রশাসকদের তালিকায় চেক করা থাকলে )। যদি তা হয় তবে বোতামটি অক্ষম করা হয়েছে (গ্রে গ্রেড) তাই আপনি ডিভাইস প্রশাসকদের থামাতে পারবেন না।
এরপরে, else if
প্যাকেজটি ইতিমধ্যে বন্ধ হয়ে গেছে কিনা তা পরীক্ষা করে দেখুন । এখানে, থামার অর্থ কেবল "চলমান নয়" doesn't আমি যতদূর বলতে পারি, প্যাকেজটি যদি থামানো অবস্থায় থাকে তবে আপনি যদি এর থেকে কোনও উপাদান চালনা করেন না (যেমন মেনু থেকে এটি চালু করে), অথবা আপনি যদি ফোর্স স্টপ বোতাম টিপেন (এটি এক বা এতে একটি "কাজ বন্ধ" ডায়ালগ) এবং এর কোনও উপাদান আবার চালাবেন না। যদি প্যাকেজটি বন্ধ না করা হয় তবে বোতামটি সক্ষম করা হবে ।
else
কেস বিরল পরিণাম যে একটি অ্যাপ্লিকেশন জুড়ে দিয়েছেন বন্ধ করা হয়েছে এবং এক ডিভাইস প্রশাসকের নয়। এই ক্ষেত্রে, এটি অন্যান্য সিস্টেম পরিষেবাগুলিকে বোতামটি সক্ষম করার সুযোগ দেয় । উদাহরণস্বরূপ, অ্যাপ্লিকেশনটিতে একটি অ্যালার্ম সেট থাকতে পারে এবং মুলতুবি রয়েছে, যা পরে বন্ধ হওয়া অবস্থা থেকেও অ্যাপটিকে আবার শুরু করার কারণ হতে পারে। এই ক্ষেত্রে, বোতামটি সক্ষম হবে। যদি অন্য কোনও সিস্টেম পরিষেবায় বোতামটি সক্ষম করার কোনও কারণ না থাকে তবে এটি অক্ষম করা হবে।
সারাংশ
জোর করে বন্ধ করে প্যাকেজ এক ডিভাইস প্রশাসকের নয় বোতাম সক্রিয় করা হয় এবং পারেন আপনি ইতিমধ্যে এই অ্যাপটি ফোর্স-বন্ধ করে অথবা আপনি এটি জোর বন্ধ করেছেন তবে একটি সিস্টেম সেবা মনে এটা আবার চালাতে হবে।
যদি অ্যাপটি চলমান থাকে (এবং এটি কোনও ডিভাইস প্রশাসক নয়) তবে ফোর্স স্টপ বোতামটি অবশ্যই সক্ষম হয়ে যাবে, তবে বোতামটি সক্ষম হওয়া মানে অ্যাপ্লিকেশনটি চলছে doesn't
You will notice this when the "Force Stop" button is active, the "Uninstall" (or "Remove") button is grayed out
, আপনি কি একটি উদাহরণ অ্যাপ্লিকেশন দিতে পারেন যা এই আচরণ করছে? আমি সবেমাত্র আমার কয়েকটি অ্যাপ্লিকেশানের মাধ্যমে স্কিম করেছিলাম এবং দেখেছি যে "ফোর্স স্টপ" এবং "আনইনস্টল" বোতাম দুটি সক্রিয় রয়েছে। আমি অ্যান্ড্রয়েড 4.4.2 এ আছি।