GVKun编程网logo

窗口 – 如何使任务栏闪烁我的应用程序像Messenger当新消息到达时?(任务栏闪动怎么设置)

10

对于想了解窗口–如何使任务栏闪烁我的应用程序像Messenger当新消息到达时?的读者,本文将提供新的信息,我们将详细介绍任务栏闪动怎么设置,并且为您提供关于android–移动应用程序:如何在不离开

对于想了解窗口 – 如何使任务栏闪烁我的应用程序像Messenger当新消息到达时?的读者,本文将提供新的信息,我们将详细介绍任务栏闪动怎么设置,并且为您提供关于android – 移动应用程序:如何在不离开我的应用程序的情况下显示我的应用程序在弹出窗口中发送的OTP?、android-即使已安装我的应用程序,它也不会出现在我的应用程序抽屉中、c# – 在我的应用程序中收听MessageBox和Dialog、c# – 如何只在我的应用程序中的所有其他窗口上保持一个窗口?的有价值信息。

本文目录一览:

窗口 – 如何使任务栏闪烁我的应用程序像Messenger当新消息到达时?(任务栏闪动怎么设置)

窗口 – 如何使任务栏闪烁我的应用程序像Messenger当新消息到达时?(任务栏闪动怎么设置)

在.NET或本机DLL中是否有API调用,当我与某人聊天时,我可以用来创建与Windows Live Messenger类似的行为?
FlashWindowEx是要走的路。见 here for MSDN documentation
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FlashWindowEx(ref FLASHWINFO pwfi);

[StructLayout(LayoutKind.Sequential)]
public struct FLASHWINFO
{
    public UInt32 cbSize;
    public IntPtr hwnd;
    public UInt32 dwFlags;
    public UInt32 uCount;
    public UInt32 dwTimeout;
}

public const UInt32 FLASHW_ALL = 3;

调用功能:

FLASHWINFO fInfo = new FLASHWINFO();

fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
fInfo.hwnd = hWnd;
fInfo.dwFlags = FLASHW_ALL;
fInfo.uCount = UInt32.MaxValue;
fInfo.dwTimeout = 0;

FlashWindowEx(ref fInfo);

这是从Pinvoke.net无端插上

android – 移动应用程序:如何在不离开我的应用程序的情况下显示我的应用程序在弹出窗口中发送的OTP?

android – 移动应用程序:如何在不离开我的应用程序的情况下显示我的应用程序在弹出窗口中发送的OTP?

我们必须编写基于OTP的身份验证代码.我看过一些应用程序,比如我的银行应用程序,当它发送OTP时,它会立即快速弹出刚刚到达的短信,这样我就可以在不离开应用程序的情况下看到OTP.我只记住数字,关闭弹出窗口,继续在该应用程序内登录.

他们是怎么做到的?是否有一些我应该关注的iOS / Android规范,它允许我们类似地弹出OTP而无需用户必须转到SMS屏幕,然后回到我们的应用程序?谢谢!

编辑:我有非常有用的Android建议.现在正在寻找这些建议的iOS变体.了解iOS有更严格的沙盒限制,所以“听众”可能会更复杂?

解决方法

这是一步一步的描述,以实现您的要求

>在AndroidManifest中声明接收器

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

2在AndroidManifest中提供阅读短信权限

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
 <uses-permission android:name="android.permission.READ_SMS" />

AndroidManifest.xml文件的完整代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidexample.broadcastreceiver"
    android:versionCode="1"
    android:versionName="1.0" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.androidexample.broadcastreceiver.broadcastNewSms"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="com.androidexample.broadcastreceiver.IncomingSms">   
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

    </application>
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <uses-permission android:name="android.permission.READ_SMS" />


</manifest>

IncomingSms.java文件的完整代码:

public class IncomingSms extends broadcastReceiver {

    // Get the object of SmsManager
    final SmsManager sms = SmsManager.getDefault();

    public void onReceive(Context context,Intent intent) {

        // Retrieves a map of extended data from the intent.
        final Bundle bundle = intent.getExtras();

        try {

            if (bundle != null) {

                final Object[] pdusObj = (Object[]) bundle.get("pdus");

                for (int i = 0; i < pdusObj.length; i++) {

                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                    String phoneNumber = currentMessage.getdisplayOriginatingAddress();

                    String senderNum = phoneNumber;
                    String message = currentMessage.getdisplayMessageBody();

                    Log.i("SmsReceiver","senderNum: "+ senderNum + "; message: " + message);


                   // Show Alert
                    int duration = Toast.LENGTH_LONG;
                    Toast toast = Toast.makeText(context,"senderNum: "+ senderNum + ",message: " + message,duration);
                    toast.show();

                } // end for loop
              } // bundle is null

        } catch (Exception e) {
            Log.e("SmsReceiver","Exception smsReceiver" +e);

        }
    }    
}

在您的活动中注册广播接收器,您将获得输出

android-即使已安装我的应用程序,它也不会出现在我的应用程序抽屉中

android-即使已安装我的应用程序,它也不会出现在我的应用程序抽屉中

为什么应用程序不会出现在应用程序抽屉中?它说在应用程序管理器中已安装它,但由于它不在应用程序抽屉中,所以我似乎无法打开实际的应用程序.一旦安装,它也不会自动打开.

这是我选择在手机(在Jellybean上)上运行时所说的话.当我将其安装到仿真器时,它说的是同一件事.

    [2012-09-19 16:20:24 - TheForeverAloneQuiz] Performing sync
    [2012-09-19 16:20:24 - TheForeverAloneQuiz] Automatic Target Mode: Several compatible targets. Please select a target device.
    [2012-09-19 16:20:28 - TheForeverAloneQuiz] Uploading TheForeverAloneQuiz.apk onto device '001988a8094d8e'
    [2012-09-19 16:20:28 - TheForeverAloneQuiz] Installing TheForeverAloneQuiz.apk...
    [2012-09-19 16:20:31 - TheForeverAloneQuiz] Success!
    [2012-09-19 16:20:31 - TheForeverAloneQuiz] /TheForeverAloneQuiz/bin/TheForeverAloneQuiz.apk installed on device
    [2012-09-19 16:20:31 - TheForeverAloneQuiz] Done!

这是android清单.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mikenning.foreveralonequiz"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Light.NoTitleBar" >
        <activity
            android:name=".Introduction"
            android:label="@string/title_activity_introduction" >
            <intent-filter>
                <action android:name="android.intent.action.INTRO" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".QuestionOne"
            android:label="@string/title_activity_introduction" >
            <intent-filter>
                <action android:name="android.intent.action.QUESTIONONE" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Result"
            android:label="@string/title_activity_introduction" >
            <intent-filter>
                <action android:name="android.intent.action.RESULTS" />

                <category android:name="android.intent.category.DEFAULT" />         
            </intent-filter>
        </activity>
    </application>

</manifest>

我做错了什么吗?

旁白我也收到错误消息,说我不需要分类为“默认”活动的许可.这可能与它有关吗?在我的一个专栏中,我需要它用于startActivity(),所以真的不需要吗?

解决方法:

我假设介绍是您的第一个活动.您需要向其添加另一个操作,如以下代码所示:

    <activity
        android:name=".Introduction"
        android:label="@string/title_activity_introduction" >
        <intent-filter>
            <action android:name="android.intent.action.INTRO" />
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

c# – 在我的应用程序中收听MessageBox和Dialog

c# – 在我的应用程序中收听MessageBox和Dialog

我有一个“ControlMonitor”类,用于监听表单上发生的事件.它的工作方式是,我将要监视的表单传递给该类的实例,然后该类遍历所有表单的控件并注册其“相关”事件.例如,如果控件是TextBox,我注册TextChanged.如果控件是ComboBox,我会同时注册SelectedindexChanged和TextChanged,依此类推.通过这种方式,“ControlMonitor”实例能够报告用户在表单中执行的每个重要操作,并且对表单代码本身的干扰最小.

它适用于报告表单中的任何控件,但我还需要知道表单启动了哪些常见的对话框/消息框以及用户如何响应它们.我应该提到的是,这里更大的目标是自动化:我们希望最终得到一组可重复的步骤,这些步骤可以编写成在自动化工具中播放的内容.为此,仅知道用户点击“文件/打开”是不够的;我们还需要知道启动的OpenFileDialog的窗口标题,用户选择的路径和DialogResult. MessageBox调用也是如此;我们需要知道窗口标题和DialogResult.

常见的对话框似乎对事件的支持很少(FolderbrowserDialog显然根本没有任何事件),而且我甚至不确定在监听MessageBox调用的结果时从哪里开始.当然,我可以编写一个封装常见对话框和MessageBox调用的包装类,并将结果传递给“ControlMonitor”实例……但是程序的其余部分必须始终使用这个包装类,并且我的“ControlMonitor”类的目标是,您可以将其包含在项目中,并在其中一个表单上进行监听,而对原始代码的入侵最小.

在“ControlMonitor”课程中我能做些什么吗?我需要所有对话框/消息框的DialogResults和窗口标题,对于更复杂的对话框,如OpenFileDialog,我还需要知道用户选择的路径等.“ControlMonitor”类是它试图听的程序的编译部分to,所以它可以直接访问传递给它的Form对象.我离这儿很近;我可以监视95%的应用程序,因为它大部分只是表单上的控件……我只需要一种方法来监视对话框!

解决方法

我知道它可能需要对您的应用程序进行相当大的更改,但是为什么不使用松散耦合的事件代理设计呢?它将为您提供更多关于如何处理事件的灵活性.

微软发布的The Composite UI Application Block有一个示例事件代理,但编写自己的代理并不多.这个想法的要点是你有一个中央经纪人,你的控件发布事件.然后,任何其他类都可以订阅任何这些事件.这使得事件发布/订阅松散耦合并消除了不同控件之间的强依赖性.

c# – 如何只在我的应用程序中的所有其他窗口上保持一个窗口?

c# – 如何只在我的应用程序中的所有其他窗口上保持一个窗口?

我想在我的C# Windows窗体应用程序中显示一个状态窗口,该窗口会在应用程序等待获取锁定时通知用户.这是一个应用程序定义的东西,但是,窗口应该是可见的并且始终保持在我的应用程序的所有其他窗口之上,即使用户单击另一个窗口(例如它后面的较大的主窗口).

它不能是模态的(因此不能使用ShowDialog())因为应用程序需要在后台继续尝试并且如果最终可以获取锁定则自动关闭窗口,并且它实际上不应该是整个窗口的最顶层站(即在该终端会话中运行的所有应用程序).

我知道Form.TopMost属性,但它只能带来并保持一个窗口高于所有其他窗口,甚至是其他应用程序的窗口.这显然不是我想要的.

我知道这是可能的,我以前在其他应用程序中已经看过很多次了.我只是不知道怎么做.

解决方法

如果将主窗体传递给状态窗体的 Show方法,它将保留在主窗体的顶部,但不会位于其他应用程序之上.因此,在主窗体中,您可以使用如下代码:

StatusForm statusForm = new StatusForm();
statusForm.Show(this);

但是,这只会指出应用程序的一个窗口作为所有者.

我们今天的关于窗口 – 如何使任务栏闪烁我的应用程序像Messenger当新消息到达时?任务栏闪动怎么设置的分享就到这里,谢谢您的阅读,如果想了解更多关于android – 移动应用程序:如何在不离开我的应用程序的情况下显示我的应用程序在弹出窗口中发送的OTP?、android-即使已安装我的应用程序,它也不会出现在我的应用程序抽屉中、c# – 在我的应用程序中收听MessageBox和Dialog、c# – 如何只在我的应用程序中的所有其他窗口上保持一个窗口?的相关信息,可以在本站进行搜索。

本文标签: