当输入秘密代码时,如何使我的应用程序启动?

5

当输入秘密代码,例如*#*#12345#*#*到拨号应用程序时,我该如何使我的应用程序启动?

我在Android文档中找不到解决方案。


为什么不直接实现一个启动屏幕,在其中输入代码? - 4ndro1d
3个回答

9
这是我的做法:
我将主活动更改为没有意图过滤器:
``` xml ```
<activity
            android:name=".ParentTrap"
            android:label="@string/title_activity_parent_trap"
            android:theme="@android:style/Theme.Holo" >
        </activity>

接下来,我使用意图过滤器操作创建了一个广播接收器:android.provider.Telephony.SECRET_CODE

然后我向其中添加了数据。以下是整个内容:

<receiver android:name=".ParentTrap$Launch" >
            <intent-filter>
                <action android:name="android.provider.Telephony.SECRET_CODE" />

                <data
                    android:host="(secret code)"
                    android:scheme="android_secret_code" />
            </intent-filter>
        </receiver>

完成后,创建一个类(我在我的主类中创建了Launch类,扩展了BroadCast接收器),然后在onReceive类中,发送意图启动活动。

然后在拨号键盘中输入*#*#(秘密代码)#*#*将启动该应用程序。


这在我的三星Galaxy Note GT-N7000上的Android 4.1.2上无法工作。我们还需要做些其他的事情来使它工作吗? - Manish
是的,我创建了一个空白活动。请参见我的相关问题:http://stackoverflow.com/questions/18901339/android-provider-telephony-secret-code-reserved-for-system-apps,如果您能帮忙就好了。 - Manish
@Manish,该帖子已不存在了。你找到问题了吗?谢谢。 - Alex

6

我认为你无法在不实际拨打电话的情况下拦截简单的拨号操作... - fklappan
啊,我在说 ## 秘密代码,但是我已经弄明白怎么使用它们了 :) - Liam W
3
那么,请问您能否更新您的帖子或回答自己的问题,以造福他人呢? - Karakuri

0

与其使用广播接收器,也许你应该注册到适当的活动意图中。例如Intent.ACTION_CALL看起来很有前途。问题是如何过滤意图以仅接收这个特定号码。我猜测它会像这样(根据我在文档中找到的内容猜测):

<action name=".YourAction">
    <intent-filter . . . >
        <action android:name="android.intent.action.CALL" />
        <!-- data is crutial here, you have to figuire it out exacly yourself -->
        <data android:scheme="tel" android:path="yourSpecyficSecretCode" />
    </intent-filter>
</action>

这里这里。使用LogCat查看intent包含的内容,然后您可以正确地进行过滤。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接