如何以编程方式设置的锁销或一个应用程序 [英] How to programmatically set a lock or pin for an app

查看:249
本文介绍了如何以编程方式设置的锁销或一个应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以现在我想开发一个Android应用程序为我的孩子。我想设置PIN或密码对选定的应用程序的时间,以$ P $一个特定的量打开该应用程序pvent他们。例如,让我们说,我的女儿想打愤怒的小鸟了一段时间我的手机上,而我所做的工作。我会选择我喜欢的消息时,Gmail等重要的应用程序,并把PIN或密码就可以了30分钟,而她扮演愤怒的小鸟。 30分钟后,我得到我的电话从我的女儿,我可以打开应用程序,而不销,因为时间限制到期。

So right now I am trying to develop an Android App for my young children. I want to set a pin or passwords on selected applications for a particular amount of time to prevent them from opening the app. For example, let's say that my daughter wants to play angry birds for some time on my phone while I am doing work. I will select my important apps like messaging, gmail, etc and put a pin or password on it for 30 minutes while she plays angry birds. After 30 minutes, I get my phone from my daughter and I can open the app without a pin because the time limit expired.

我已经做了一吨的这个研究,但我一直没能找到我的具体情况实施。

I have done a ton of research on this, but I haven't been able to find an implementation for my particular case.

如何安卓"程序锁"应用程序的工作?

我知道,应用程序锁也有类似什么样的我想要做的结构。我只是把时间限制的锁。

I know that app lock has a similar kind of structure of what I want to do. I just to place a time limit for the lock.

https://play.google。 ?COM /存储/应用程序/详细信息ID = com.domobile.applock和放大器; HL = EN

我从秒杀活动/应用ActivityManager等我真的只想过一段特定量的选定应用干净的锁屏避而远之。

I am staying away from killing activities/ applications with ActivityManager etc. I really just want a clean lock screen over a selected app for a particular amount of time.

我有一个CountdownTimer倒计时计时器的时间,我设定。我将如何修改这个code,以阻止某些应用程序的时间选择的金额,如果我把所有的包名称?

I have a CountdownTimer to count down the timer for a time I set. How would I modify this code to block certain applications for a chosen amount of time if I had all the packagename?

    start_timer.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View view) {

            new AlertDialog.Builder( MainActivity.this )
                    .setMessage( "Are you sure you want to block the selected apps for the set amount of time?" )
                    .setPositiveButton( "Yeah man!", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            Log.d( "AlertDialog", "Positive" );

                            hourint = Integer.valueOf(number_text.getText().toString());

                            minuteint = Integer.valueOf(minute_text.getText().toString());

                            secondint = Integer.valueOf(second_text.getText().toString());

                            Log.i("YourActivity", "Hours: " + hourint);

                            Log.i("YourActivity", "Minutes: " + minuteint);

                            Log.i("YourActivity", "Seconds: " + secondint);

                            totalTimeCountInMilliseconds = ((hourint*60*60) +(minuteint*60) + (secondint)) * 1000;      // time count
                            timeBlinkInMilliseconds = 30*1000;

                            countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) {
                                // 500 means, onTick function will be called at every 500 milliseconds

                                @Override
                                public void onTick(long leftTimeInMilliseconds) {
                                    Context context = MainActivity.this;





                                    long seconds = leftTimeInMilliseconds / 1000;
                                    mSeekArc.setVisibility(View.INVISIBLE);
                                    start_timer.setVisibility(View.INVISIBLE);
                                    block_button1.setVisibility(View.INVISIBLE);



                                    if ( leftTimeInMilliseconds < timeBlinkInMilliseconds ) {
                                        // textViewShowTime.setTextAppearance(getApplicationContext(), R.style.blinkText);
                                        // change the style of the textview .. giving a red alert style

                                        if ( blink ) {
                                            number_text.setVisibility(View.VISIBLE);
                                            minute_text.setVisibility(View.VISIBLE);
                                            second_text.setVisibility(View.VISIBLE);


                                            // if blink is true, textview will be visible
                                        } else {
                                            number_text.setVisibility(View.INVISIBLE);
                                            minute_text.setVisibility(View.INVISIBLE);
                                            second_text.setVisibility(View.INVISIBLE);


                                        }

                                        blink = !blink;         // toggle the value of blink
                                    }

                                    second_text.setText(String.format("%02d", seconds % 60));
                                    minute_text.setText(String.format("%02d", (seconds / 60) % 60));
                                    number_text.setText(String.format("%02d", seconds / 3600));                     // format the textview to show the easily readable format
                                }


                                @Override
                                public void onFinish() {
                                    // this function will be called when the timecount is finished
                                    //textViewShowTime.setText("Time up!");
                                    number_text.setVisibility(View.VISIBLE);
                                    minute_text.setVisibility(View.VISIBLE);
                                    second_text.setVisibility(View.VISIBLE);
                                    mSeekArc.setVisibility(View.VISIBLE);
                                    start_timer.setVisibility(View.VISIBLE);
                                    block_button1.setVisibility(View.VISIBLE);


                                }

                            }.start();
                        }
                    })
                    .setNegativeButton("Nope!", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            Log.d("AlertDialog", "Negative");
                            dialog.cancel();
                        }
                    })
                    .show();

编辑: http://pastebin.com/MHGFw7PK

推荐答案

逻辑

  • 您必须做,当你想阻止应用程序启动一个服务,
  • 和服务,你必须检查应用程序packagenames,这样就可以决定运行哪些应用程序,并显示出PIN /密码活性

现在$ C C示例 $

  • 要启动服务,code这个样子,

  • To Start a service, code like this,

startService(new Intent(this, SaveMyAppsService.class));

  • 现在,在你的服务,检查包这样,

  • Now, Inside your service, check packages like this,

    public class SaveMyAppsService extends android.app.Service {
    
    String CURRENT_PACKAGE_NAME = {your this app packagename};
    String lastAppPN = "";
    boolean noDelay = false;
    public static SaveMyAppsService instance;
    
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
    
        scheduleMethod();
        CURRENT_PACKAGE_NAME = getApplicationContext().getPackageName();
        Log.e("Current PN", "" + CURRENT_PACKAGE_NAME);
    
        instance = this;
    
        return START_STICKY;
    }
    
    private void scheduleMethod() {
        // TODO Auto-generated method stub
    
        ScheduledExecutorService scheduler = Executors
                .newSingleThreadScheduledExecutor();
        scheduler.scheduleAtFixedRate(new Runnable() {
    
            @Override
            public void run() {
                // TODO Auto-generated method stub
    
                // This method will check for the Running apps after every 100ms
                if(30 minutes spent){
                     stop();
                }else{
                   checkRunningApps();
               }
            }
        }, 0, 100, TimeUnit.MILLISECONDS);
    }
    
     public void checkRunningApps() {
    ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager
            .getRunningTasks(1);
    ActivityManager.RunningTaskInfo ar = RunningTask.get(0);
    String activityOnTop = ar.topActivity.getPackageName();
    
     Log.e("activity on TOp", "" + activityOnTop);
    
    
    // Provide the packagename(s) of apps here, you want to show password activity
    if (activityOnTop.contains("whatsapp")  // you can make this check even better
            || activityOnTop.contains(CURRENT_PACKAGE_NAME)) {
            // Show Password Activity
    
    } else {
            // DO nothing
    }
     }
    
    public static void stop() {
    if (instance != null) {
        instance.stopSelf();
    }
    }
     }
    

  • 这篇关于如何以编程方式设置的锁销或一个应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    相关文章
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆