如何在收到短信时运行应用程序

时间:2015-11-16 19:48:20

标签: java android broadcastreceiver

我制作的应用程序应该在手机收到带有特定内容(如密码)的短信时启动。我尝试了很多代码,但它仍然无法运行。有人可以帮帮我吗?

这是我的代码: SmsReceiver.java

%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact
from IPython.display import display

images = np.random.random((500, 14, 14))
fig, ax = plt.subplots()
im = ax.imshow(images[0], cmap='gray', interpolation='nearest')
def browse_images(images):
    N = images.shape[0]
    def view_image(i=0):
        im.set_data(images[i])
        ax.set_title('Image {0}'.format(i))
        fig.canvas.draw_idle()
    interact(view_image, i=(0, N-1))

的AndroidManifest.xml

browse_images(images)
是的,我有什么方法可以模拟短信,所以如果我想查看它是否正常工作,我不必要求别人给我发短信

2 个答案:

答案 0 :(得分:1)

您正在将应用程序设置为启动器应用程序,只有在您单击要运行的图标时才会执行此操作。您需要指定用于在收到SMS时启动应用程序的intent过滤器。然后在代码中,您可以在Main活动中设置广播接收器以收听后续文本。

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@style/AppTheme.NoActionBar" >
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

答案 1 :(得分:1)

不要使用compileSdkVersion,targetSdkVersion,buildToolsVersion 23或更高版本。因为在API级别23中,广播接收器中的SMS_RECEIVED操作被拒绝许可
使用21或更低版本。下面的配置适用于我

compileSdkVersion 21
buildToolsVersion“21.1.2”
targetSdkVersion 21