آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

قفل کردن دکمه home گوشی؟ (حل شد)

Mohammad  11 سال پیش  11 سال پیش
0 0

سلام دوستان گرامی!

چطور دکمه هوم(home)گوشی رو قفل کنم که وقتی روش کلیک شد عمل نکنه؟

آیا کد یا تنظیمات خاصی داره؟

ممنون میشم راهنماییم کنید...

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Farshad  11 سال پیش
+5 0

ابتدا پرمیژن زیر رو اضافه کنید

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

بعد داخل فولدر lib فایل HomeKeyLocker.java رو درست کن و کد زیر رو داخلش بنویس

 import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.widget.FrameLayout;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
/**
* Created by shaobin on 2014/3/22.
*/
public class HomeKeyLocker {
private OverlayDialog mOverlayDialog;
public void lock(Activity activity) {
if (mOverlayDialog == null) {
mOverlayDialog = new OverlayDialog(activity);
mOverlayDialog.show();
}
}
public void unlock() {
if (mOverlayDialog != null) {
mOverlayDialog.dismiss();
mOverlayDialog = null;
}
}
private static class OverlayDialog extends AlertDialog {
public OverlayDialog(Activity activity) {
super(activity, R.style.OverlayDialog);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.type = TYPE_SYSTEM_ERROR;
params.dimAmount = 0.0F; // transparent
params.width = 0;
params.height = 0;
params.gravity = Gravity.BOTTOM;
getWindow().setAttributes(params);
getWindow().setFlags(FLAG_SHOW_WHEN_LOCKED | FLAG_NOT_TOUCH_MODAL, 0xffffff);
setOwnerActivity(activity);
setCancelable(false);
}
public final boolean dispatchTouchEvent(MotionEvent motionevent) {
return true;
}
protected final void onCreate(Bundle bundle) {
super.onCreate(bundle);
FrameLayout framelayout = new FrameLayout(getContext());
framelayout.setBackgroundColor(0);
setContentView(framelayout);
}
}
}

اینم کد داخل برنامه

 
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
import io.github.homelocker.lib.HomeKeyLocker;
public class MainActivity extends ActionBarActivity implements CompoundButton.OnCheckedChangeListener {
private ToggleButton mTbLock;
private HomeKeyLocker mHomeKeyLocker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHomeKeyLocker = new HomeKeyLocker();
mTbLock = (ToggleButton) findViewById(R.id.tb_lock);
mTbLock.setOnCheckedChangeListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView == mTbLock) {
if (isChecked) {
mHomeKeyLocker.lock(this);
} else {
mHomeKeyLocker.unlock();
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mHomeKeyLocker.unlock();
mHomeKeyLocker = null;
}

+1 0
(11 سال پیش)
0 0
دوست عزیز ممنون از راهنماییت!!موفق باشی... (11 سال پیش)
0 0
دوست عزیز ممنون از راهنماییت!!موفق باشی... (11 سال پیش)
+2 0
خواهش میکنم قابلی نداشت :)) شما هم موفق باشی (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .