如何在没有按下按钮或任何东西的情况下运行命令startActivity(Intent i)?

时间:2017-03-18 16:43:23

标签: android actionlistener

因此,在Android Studio中,我正在开发一个使用网络刮刀库来扫描网页的应用,当它识别出网页上的某个字符串时,它会自动拨打电话。但是,因为此代码只是在我的main方法中运行,所以当我尝试调用startActivity函数时出现编译错误。

我是android开发的新手,但是从目前为止我收集到的内容来看,startActivity函数似乎只能从某种类型的Listener内部的方法调用。那么,最好的解决方法是什么?谢谢!

以下是我所说的方法:

public static void main(String[] args) throws ResponseException, NotFound {
        user = new UserAgent();
        while (true) {
            if (canCheck()) {
                user.visit("https://twitter.com/******");
                Element mostRecentTweet = user.doc.findFirst("<div class=\"tweet-text\"");
                System.out.println(mostRecentTweet.innerText());
                if (lastTweet != null) {
                    if (mostRecentTweet.innerText().equals(lastTweet.innerText())) {
                        String phoneNumber = searchForNumber(mostRecentTweet.innerText());
                        if (phoneNumber != null) {
                            Intent intent = new Intent(Intent.ACTION_CALL);
                            intent.setData(Uri.parse("tel:" + phoneNumber));
                            startActivity(intent);
                            break;
                        }
                    }

                }
                lastTweet = mostRecentTweet;
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

你想要做的事情相当复杂,因为它涉及许多用户不喜欢的事情:持续运行后台工作,在没有用户干预的情况下拨打电话等等。

要定期工作,最简单的解决方案是use JobScheduler,您的应用程序逻辑将放在JobService子类中。然后,您需要一个活动,可能响应于单击按钮,将安排JobScheduler的定期工作。请注意,您的作业将不定期运行,并且在Android 6.0+设备上,当您的应用进入应用待机模式以及设备处于打盹模式时,它们将很少运行。

JobService中,您可以从互联网上获取数据。但是,您无法轻松启动活动,因为这样做是积极的用户敌意。您当时不知道用户在前台做了什么,并且接管屏幕以拨打电话将中断用户。一个更好的解决方案是提高Notification,也许是优先级&#34;单挑&#34;一,允许用户在用户需要时拨打电话。

ACTION_CALL需要CALL_PHONE权限,如果您的targetSdkVersion为23或更高,则需要在您的活动中实施runtime permissions,因为用户必须同意允许您代表用户拨打电话。

答案 1 :(得分:-1)

使用在webscrapper库找到字符串时生成事件的后台服务,然后在应用中注册侦听此事件的广播接收器。对于后台服务,请阅读此artcicle https://www.bignerdranch.com/blog/choosing-the-right-background-scheduler-in-android/希望有所帮助