【问题标题】:Is there a way to start the application right after installation using some "helper application"? [duplicate]有没有办法在使用一些“帮助应用程序”安装后立即启动应用程序? [复制]
【发布时间】:2013-07-24 22:40:35
【问题描述】:

我正在开发一个防盗应用程序,它基于使用广播接收器为传入的SMS 启动服务。

但是如果手机已经丢失,从Google Play远程安装应用程序时广播接收器将无法工作,因为应用程序必须至少启动一次才能接收3.0+版本的广播。

那么,有没有办法在安装后使用一些“帮助应用程序”立即启动应用程序,或者让广播接收器为远程安装工作?

【问题讨论】:

标签: java android


【解决方案1】:

您的应用程序需要在清单中拥有 android.permission.RECEIVE_SMS 的使用权限。

一旦你有了它,你就可以为android.provider.Telephony.SMS_RECEIVED注册一个广播接收器。

然后你会想要创建你的receiver

<receiver android:name=".SMSBroadcastReceiver"> 
    <intent-filter> 
        <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver>

您的接收者应该扩展 BroadcastReceiver 并在 onReceive() 方法中,当您收到 android.provider.Telephony.SMS_RECEIVED_ACTION 的意图时,您想要检索消息并确定它是否是您想要关注的消息。

您的代码可能看起来像这样。

public class SMSBroadcastReceiver extends BroadcastReceiver {
    private static final String TAG = "SMSBroadcastReceiver";
    private static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(SMS_RECEIVED)) {
            Bundle bundle = intent.getExtras();
            if (bundle != null) {
                Object[] pdus = (Object[]) bundle.get("pdus");
                final SmsMessage[] messages = new SmsMessage[pdus.length];
                for (int i = 0; i < pdus.length; i++) {
                    messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                }
                if (messages.length > -1) {
                    //You have messages, do something with them here to determine if you want to look at them and other actions.
                }
            }
        }
    }
}

【讨论】:

  • 哥们,你不明白这个问题。请再次阅读问题。
  • 您正试图在本机应用程序上加载您的解决方案,但考虑到用户可能无法访问他们的应用程序来注册电话的情况。相反,我会进行远程安装,注册接收器(自动完成),然后让用户在网站或其他平台上输入他们的号码。完成后,等待几分钟将短信发送到他们提供的号码launch service,然后继续您的快乐之旅。
  • 抱歉没找到你。您是否知道如果应用程序未启动至少一次(对于 3.0 版以上),广播接收器将无法工作。
  • 我不知道这一点,很高兴知道。看一下here,您似乎可以使用FLAG_INCLUDE_STOPPED_PACKAGES 来克服这个限制。根据我对阅读更改的理解,不同之处在于应用程序被认为处于停止状态,这会导致广播接收器无法被调用,因此设置标志将使其可用并缓解您的问题。
猜你喜欢
  • 2013-11-28
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多