为文本消息链接HandcentSMS创建对话框链接弹出窗口

时间:2012-03-16 20:54:02

标签: android dialog sms

我正在修改测试消息应用程序,我想要添加到其中的一个功能是,当收到文本消息时,会弹出某种对话框。短信内容和快速回复的能力,无需进入实际应用程序。以HandcentSMS为例,这就是我所说的:

Quick Text reply

任何想法如何去做,或者有人能指出我的方向来开始这个吗?

2 个答案:

答案 0 :(得分:5)

您可以创建一个活动,并使用应继承Theme.Dialog的自定义样式对其进行样式设置 示例样式:

<style name="Theme.MyDialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@android:drawable/alert_light_frame</item>
        <item name="android:textColorPrimary">@android:color/black</item>
        <item name="android:textColor">@android:color/black</item>            
        <item name="android:overScrollMode">never</item>
        <item name="android:windowNoTitle">true</item>
</style>

最重要的是正确准备活动的xml布局。 我建议垂直使用WRAP_CONTENT,水平调整FILL_PARENT。

示例布局xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="280dp"
    android:orientation="vertical">
    <LinearLayout
        android:id="@+id/frg_alert_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@android:id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/topbar_logo"
            android:drawablePadding="10dp"
            android:gravity="center_vertical"
            android:padding="10dp"
            android:text="Title"/>
        <View
            android:layout_width="fill_parent"
            android:layout_height="2dp"
            android:background="@android:drawable/divider_horizontal_bright"/>
    </LinearLayout>
    <FrameLayout
        android:id="@+id/customPanel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:visibility="gone">
        <FrameLayout
            android:id="@+id/custom"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
    </FrameLayout>
    <ScrollView
        android:id="@+id/messagePanel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:padding="10dp">
        <TextView
            android:id="@android:id/message"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Some text"/>
    </ScrollView>
    <View
        android:layout_width="fill_parent"
        android:layout_height="2dp"
        android:background="@android:drawable/divider_horizontal_bright"/>
    <LinearLayout
        android:id="@+id/frg_alert_three_buttons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="5dp"
        android:visibility="gone"
        android:weightSum="3">
        <Button
            android:id="@+id/button_positive"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android:layout_weight="1"
            android:maxLines="2"
            android:minLines="2"
            android:text="Button"/>
        <Button
            android:id="@+id/button_neutral"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:maxLines="2"
            android:text="Button"/>
        <Button
            android:id="@+id/button_negative"
            style="?android:attr/buttonStyle"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_marginLeft="5dp"
            android:layout_weight="1"
            android:maxLines="2"
            android:text="Button"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/frg_alert_two_buttons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="@dimen/screenPadding"
        android:weightSum="2">
        <Button
            android:id="@+id/button_positive"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:maxLines="2"
            android:minLines="2"
            android:text="Button"/>
        <Button
            android:id="@+id/button_negative"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_weight="1"
            android:maxLines="2"
            android:minLines="2"
            android:text="Button"/>
    </LinearLayout>
</LinearLayout>

答案 1 :(得分:3)

创建此UI只需创建一个背景透明的活动:

第1步:添加res \ values \ style.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Smspopuptheme" parent="android:style/Theme.Translucent">
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:background">@android:color/transparent</item>
</style>  
</resources>

第2步:AndroidManifest.xml中添加主题,以便将您想要显示的活动显示为:

<activity
    android:label="@string/app_name"
    android:theme="@style/Theme.D1NoTitleDim"
    android:name=".SmspopuptestActivity" >
    <intent-filter >
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

第3步:在SmspopuptestActivity.java中将FEATURE_NO_TITLE设置为setContentView之前:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    //Remove notification bar
    //this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.main);

第4步:您的活动布局如res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#55000000"
    android:gravity="center"
    android:orientation="horizontal" >
    <LinearLayout
        android:id="@+id/frg_alert_buttons"
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:background="@android:color/darker_gray"
        android:gravity="center"
        android:padding="5dp"
        android:layout_centerInParent="true"
        android:weightSum="3">
    </LinearLayout>
</LinearLayout>

根据需要在frg_alert_buttons中添加您的布局元素,如Buttons,Textviews,Imageview和EditView。

收到新短信时启动SmspopuptestActivity.java活动。

一些有用的资源:

android-listen-for-incoming-sms-messages

在Android中使用SMSPOPUP的一些代码:

droid-notify

android-smspopup

showsms

smspopup-for-android