मैं एक ऐप रखता हूं, यह सर्वर से संदेश प्राप्त करेगा और उपयोगकर्ता को एक संवाद देगा। तो जब फोन लॉक स्क्रीन पर है तो मैं संवाद दिखाऊंगा लॉक स्क्रीन के शीर्ष पर लेकिन इसे अनलॉक नहीं करें। क्या कोई मुझे सुझाव दे सकता है?एंड्रॉइड: लॉक स्क्रीन पर संवाद या गतिविधि कैसे दिखाएं [स्क्रीन अनलॉक नहीं करें]
उत्तर
public void onAttachedToWindow() {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
अंत में मैंने वही हासिल किया। गतिविधि के लिए मत जाओ, क्योंकि एंड्रॉइड सुरक्षा कारण के लिए आपकी गतिविधि के पीछे लॉक स्क्रीन नहीं दिखाएगा, इसलिए गतिविधि के बजाय सेवा का उपयोग करें।
नीचे मेरी सेवा
WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
View mView = mInflater.inflate(R.layout.score, null);
WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT, 0, 0,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
/* | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON */,
PixelFormat.RGBA_8888);
mWindowManager.addView(mView, mLayoutParams);
की onStartCommand में मेरी कोड है और प्रकट करने के लिए
मैं निम्नलिखित तरीके से कुछ इसी तरह हल <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
जोड़ें। कार्रवाई को प्रसारित करने के लिए, "ACTION_SCREEN_ON
& ACTION_USER_PRESENT
& ACTION_SCREEN_OFF
", WINDOW_SERVICE
के साथ विंडो दिखाने के लिए फ़ंक्शन बनाएं। मैं अपनी आवश्यकताओं के लिए एक सेवा का उपयोग करता हूं, लेकिन यह अनुकूलित कर सकता है।
public class OverlayService extends Service {
private static final String TAG = OverlayService.class.getSimpleName();
WindowManager mWindowManager;
View mView;
Animation mAnimation;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
registerOverlayReceiver();
return super.onStartCommand(intent, flags, startId);
}
private void showDialog(String aTitle){
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mView = View.inflate(getApplicationContext(), R.layout.fragment_overlay, null);
mView.setTag(TAG);
int top = getApplicationContext().getResources().getDisplayMetrics().heightPixels/2;
RelativeLayout dialog = (RelativeLayout) mView.findViewById(R.id.dialog);
LayoutParams lp = (LayoutParams) dialog.getLayoutParams();
lp.topMargin = top;
lp.bottomMargin = top;
mView.setLayoutParams(lp);
ImageButton imageButton = (ImageButton) mView.findViewById(R.id.close);
lp = (LayoutParams) imageButton.getLayoutParams();
lp.topMargin = top - 58;
imageButton.setLayoutParams(lp);
imageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mView.setVisibility(View.INVISIBLE);
}
});
TextView title = (TextView) mView.findViewById(R.id.Title);
title.setText(aTitle);
final WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT, 0, 0,
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON ,
PixelFormat.RGBA_8888);
mView.setVisibility(View.VISIBLE);
mAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.in);
mView.startAnimation(mAnimation);
mWindowManager.addView(mView, mLayoutParams);
}
private void hideDialog(){
if(mView != null && mWindowManager != null){
mWindowManager.removeView(mView);
mView = null;
}
}
@Override
public void onDestroy() {
unregisterOverlayReceiver();
super.onDestroy();
}
private void registerOverlayReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
registerReceiver(overlayReceiver, filter);
}
private void unregisterOverlayReceiver() {
hideDialog();
unregisterReceiver(overlayReceiver);
}
private BroadcastReceiver overlayReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "[onReceive]" + action);
if (action.equals(Intent.ACTION_SCREEN_ON)) {
showDialog("Esto es una prueba y se levanto desde");
}
else if (action.equals(Intent.ACTION_USER_PRESENT)) {
hideDialog();
}
else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
hideDialog();
}
}
};
}
मुझे आशा है कि यह उपयोगी होगा!
से ऊपर का उत्तर देखें, मैं सही समाधान खोज रहा था, धन्यवाद gfirem और Unihedro। –
क्या आप fragment_overlay साझा कर सकते हैं? –
धन्यवाद! यह काम करता है लेकिन FLAG_DISMISS_KEYGUARD https://stackoverflow.com/a/32233473/4229910 के साथ नहीं – ashwinx
- 1. डिफ़ॉल्ट लॉक स्क्रीन पर एंड्रॉइड गतिविधि
- 2. एंड्रॉइड स्क्रीन पर अधिसूचना कैसे दिखाएं
- 3. एंड्रॉइड स्क्रीन लॉक
- 4. स्क्रीन अनलॉक होने पर गतिविधि हैंडल
- 5. स्क्रीन लॉक होने पर गतिविधि को कैसे प्रदर्शित करें?
- 6. एंड्रॉइड अनलॉक स्क्रीन इरादा?
- 7. एंड्रॉइड स्क्रीन लॉक/प्रोग्रामेटिक रूप से अनलॉक करें
- 8. मैं लॉक स्क्रीन
- 9. लॉक स्क्रीन
- 10. आईफोन स्क्रीन 0 प्रोग्रामिंग लॉक और अनलॉक करें
- 11. कस्टम लॉक स्क्रीन ऐप में एंड्रॉइड लॉक के साथ समस्याएं
- 12. डिफ़ॉल्ट लॉक स्क्रीन के बजाय एंड्रॉइड में अपनी लॉक स्क्रीन कैसे बनाएं
- 13. लॉक स्क्रीन
- 14. स्क्रीन गतिविधि पर वर्तमान कैसे प्राप्त करें?
- 15. एंड्रॉइड - मूल स्क्रीन पर एक संवाद कैसे प्रदर्शित करें?
- 16. लॉलीपॉप एंड्रॉइड लॉक स्क्रीन विजेट
- 17. दूसरी स्क्रीन पर संवाद/फ्रेम पूर्णस्क्रीन दिखाएं क्यूटी/सी ++
- 18. एंड्रॉइड: स्क्रीन पर स्क्रीन रिसीवर
- 19. कस्टम लॉक स्क्रीन कार्यान्वयन तकनीक
- 20. एंड्रॉइड में पैटर्न/पासवर्ड मोड के साथ स्क्रीन को लॉक/अनलॉक कैसे करें?
- 21. स्क्रीन अभिविन्यास लॉक (Android)
- 22. एंड्रॉइड में लॉक स्क्रीन पर कस्टम जानकारी प्रदर्शित करें
- 23. एंड्रॉयड फेसबुक लॉक स्क्रीन अधिसूचना
- 24. ग्रेक्व्यू स्क्रीन पर jqueryui संवाद
- 25. लॉगऑन और लॉक स्क्रीन
- 26. लॉक स्क्रीन में आम अनुस्मारक
- 27. एंड्रॉइड लॉक स्क्रीन छवि को कैसे सेट करें
- 28. Android गतिविधि स्क्रीन पर किसी छवि का फ़ेडेन कैसे करें?
- 29. Android के लिए लॉक स्क्रीन एंड्रॉइड का उपयोग करके लॉक स्क्रीन के लिए एंड्रॉइड
- 30. कोड (स्क्रीन लॉक) से एंड्रॉइड बटन/फोन को कैसे लॉक करें?
धन्यवाद, इससे मेरे लिए अंतर आया है, अगर आप इसे लॉकस्क्रीन पर दिखाना चाहते हैं तो गतिविधि का उपयोग न करें और पृष्ठभूमि पर लॉकस्क्रीन –
@AdibFara तो, हम किस शोल का उपयोग करते हैं? – kadik
@kadik आप इसके बजाय सेवा का उपयोग कर सकते हैं, कृपया –