精华内容
下载资源
问答
  • 利用intent打开另一个应用的功能

    千次阅读 2016-01-03 02:07:24
    Android 系统有一个特性就是可以让用户从一个app进入另一个app,在一个app里点击一个号码就可以进入拨号界面。 实现这功能一般用的是隐式intent 隐式intent不会声明启动的类名,仅仅声明一个你需要执行的action...

       Android 系统有一个特性就是可以让用户从一个app进入另一个app,在一个app里点击一个号码就可以进入拨号界面。

    实现这个功能一般用的是隐式intent

    隐式intent不会声明启动的类名,仅仅声明一个你需要执行的action

    Action指定了你想要做的事,例如发送短信,进入地图界面,分享功能。

    Action指定你做的事情类型,你可以通过uri去得到具体的数据。

     

    Intent提供一种构造方法:

    如下面例子:初始化一个打电话的,uri则是指定电话号码。

    Uri number = Uri.parse("tel:5551234");
    Intent callIntent = new Intent(Intent.ACTION_DIAL, number);

     

    调用startActivity(intent)就可以实现打电话的功能。

     

    查看一个地图:

    // Map point based on address
    Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
    // Or map point based on latitude/longitude
    // Uri location = Uri.parse("geo:37.422219,-122.08364?z=14"); // z param is zoom level
    Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);

     

    打开一个网页

    Uri webpage = Uri.parse("http://www.android.com");
    Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);

     

    隐式intent还有一个extra data 可以设置不同的数据类型,你可以通过putExtra方法添加不同的信息,你没有给intent提供uri数据类型,你也可以通过intentsetType方法设置一个类型。设置MIME类型进一步指定那种activity应该接受这个intent

    MIME类型就是设定某种扩展名文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义文件名,以及一些媒体文件打开方式。

    URI百度解释:在电脑术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。

    Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。

    发送邮件功能实现:

    Intent emailIntent = new Intent(Intent.ACTION_SEND);//没有指定uri
    // The intent does not have a URI, so declare the "text/plain" MIME type
    emailIntent.setType(HTTP.PLAIN_TEXT_TYPE);//设置了一个 text/plain类型
    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"jon@example.com"}); // recipients
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message text");
    emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://path/to/email/attachment"));
    // You can also attach multiple items by passing an ArrayList of Uris

     

     

    创建一个日历事件

    Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);
    Calendar beginTime = Calendar.getInstance().set(2012, 0, 19, 7, 30);
    Calendar endTime = Calendar.getInstance().set(2012, 0, 19, 10, 30);
    calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
    calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
    calendarIntent.putExtra(Events.TITLE, "Ninja class");
    calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo");

    这个日历事件intent支持api 14以上

     

    如果你想查看照片使用Intent.ACTION_VIEW 你应该指定image/* 这种MIME类型。

     

    注意:如果你调用Intent 去打开另一个应用,但是设备上没有app 可以处理你定义的intent,你的程序就会闪退。

     

    所以你应该查看是否有Activity是否可以处理你的intent,如果返回的activity列表非空,你就可以正常使用intent了。

    PackageManager packageManager = getPackageManager();
    List activities = packageManager.queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    boolean isIntentSafe = activities.size() > 0;

     

    如果针对你的intent有多个activity匹配,就会弹出一个对话框让你选择哪一个app处理。

     

    如果只有一个就会立即打开应用。

     

    下面是一个完整的例子,正确使用intent打开地图功能。

    // Build the intent
    Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
    Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);

    // Verify it resolves
    PackageManager packageManager = getPackageManager();
    List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
    boolean isIntentSafe = activities.size() > 0;

    // Start an activity if it's safe
    if (isIntentSafe) {
        startActivity(mapIntent);
    }

     你通过startActvity 默认打开intent 如果有多个应用匹配就会弹出选择对话框:

     

    并且默认可以 设置你默认打开的checkbox 

    有时候用户点了默认,又想选择另一个应用,这样有另一种方式处理。

    Intent intent = new Intent(Intent.ACTION_SEND);
    ...

    // Always use string resources for UI text.
    // This says something like "Share this photo with"
    String title = getResources().getString(R.string.chooser_title);
    // Create intent to show chooser
    Intent chooser = Intent.createChooser(intent, title);

    // Verify the intent will resolve to at least one activity
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(chooser);
    }

    利用intent 创建选择对话框,可以让用户每次都可以选择,没有默认checkbox


    展开全文
  • WPF 只允许打开一个实例

    千次阅读 2016-12-29 09:28:43
    我们有时候只希望我们的程序只打开一个实例,也就是我们的软件只有次被打开。 那么我们可以通过一个办法知道,在这软件打开前是不是打开一个,还没关闭。也就是是否存在另一个程序在运行。

    我们有时候只希望我们的程序只打开一个实例,也就是我们的软件只有一次被打开。

    那么我们可以通过一个办法知道,在这个软件打开前是不是打开过一个,还没关闭。也就是是否存在另一个程序在运行。

    下面是一个简单方法

    
                        // 确保不存在程序的其他实例
                        singleInstanceWatcher = new Semaphore(
                            0, // Initial count.
                            1, // Maximum count.
                            Assembly.GetExecutingAssembly().GetName().Name, out createdNew);
                        if (createdNew)
                        {
                            //之前没有运行过
                        }
                        else
                        {
                            //重复运行
                            MessageBox.Show("请不要重复运行(ノ`Д)ノ");
                            Environment.Exit(-2);
                        }
    

    另一个方法

                string mutexName = Properties.Resources.ProgramTitle + "Mutex";
                singleInstanceWatcher = new Mutex(false, mutexName, out createdNew);
                if (!createdNew)
                {
                    MessageBox.Show("程序已经运行!", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
                    Environment.Exit(-1);
                }
    
    bool createdNew;
    System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out createdNew);
    if (createdNew)
    {
        Application.Run(new LoginForm());
        instance.ReleaseMutex();
    }
    else
    {
        Application.Exit();
    }
    

    http://www.cnblogs.com/z_lb/archive/2012/09/16/2687487.html

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

    展开全文
  •  /// 应用程序的主入口点。  ///  [STAThread]  static void Main()  {  bOnlyOneInstance = false;  Mutex mutex = new Mutex(true, Application.UserAppDataPath.Replace(@"/", "_"), out ...

    修改program.cs中的程序
    *********************************************
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;

    using System.Threading;

    namespace PCBilling_Server
    {
        static class Program
        {
            public static bool bOnlyOneInstance = false;
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                bOnlyOneInstance = false;
                Mutex mutex = new Mutex(true, Application.UserAppDataPath.Replace(@"/", "_"), out bOnlyOneInstance);

                if (!bOnlyOneInstance)
                {
                    MessageBox.Show("系统已经运行!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    System.Environment.Exit(0);
                    return;
                }

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Frm_Login());
            }
        }
    }

    展开全文
  • mac应用程序打开问题解决

    万次阅读 2017-01-22 17:00:44
    mac应用程序打开问题解决 起因很简单,就是在我的mac上下载了暴雪的战网安装文件,一般就是battlenet.app这种,通常下载好了双击运行即可安装战网。 然而这次我下载后双击无法打开,就显示打开,如果文件...

    mac应用程序不能打开问题解决

     起因很简单,就是在我的mac上下载了暴雪的战网安装文件,一般就是battlenet.app这种,通常下载好了双击运行即可安装战网。

     然而这次我下载后双击无法打开,就显示不能打开,如果文件没有问题,通常不能打开的都是权限问题,然而在设置->权限隐私那块允许了全部,还是不行,有点诡异。

     我创建了一个新的管理员账户,发现可以打开,那么可以确认是权限问题,我就看了下这个app的权限,发现用户组与其他app不一样,其他app的用户组是admin,而它是staff,并且权限的标志位也有些许区别,那么简单了,直接

    chown -R xxx:admin xxx.app
    chmod -R 755 xxx.app

     就好了,具体不想去研究权限是否多给了,能用即可,不过我猜测可以不执行chmod的。

     产生的原因可能是下载的权限之类导致的,以后遇到问题能解决就好。

    VR开发或者unity相关交流可以邮件madcloudsong@qq.com
    转载请注明原文链接
    http://blog.csdn.net/madcloudsong/article/details/54669567

    展开全文
  • 苹果系统允许打开任何来源的应用

    千次阅读 2017-11-24 14:04:20
    Mac安装第三方应用时提示”*.app”已损坏,打开.这是因为安装权限问题,把隐私偏好设置的”允许所有来源”安装选项即可.新版Mac系统默认隐藏了”允许任何来源”隐藏了.使用sudo spctl --master-disable命令打开即可....
  • iOS 10 之后,陆陆续续地有用户联系我们,说新机第次安装、第次启动的时候,app 首屏...开始以为是用户网络情况不好,但随着越来越多的用户报告这问题,我意识到这并不是偶然情况。但是并非所有用户都如此。
  • 允许打开任何来源应用,文件损坏等,解决办法 有时候,从第三方下载安装的软件,在打开的时候会提示:程序损坏,请移至废纸篓 其实,打开的原因是因为没有设置 允许任意来源的程序 查看 系统偏好设置 - 安全 会...
  • Qt项目中我设计了两按钮,当点击其中一个按钮时用QProcess对象打开一个应用,点击另外一个按钮时想把打开的这个应用关掉,但是一直都没成功,怎么实现呢?
  • 现在在做一个测试项目,每次recovery后打开播放器进行播放视频,这过程是通PC下用ADB控制,现在遇到的问题是,recovery后打开应用需要允许有访问存储的权限,怎么通ADB控制,让应用允许呢,谢谢了。
  • 之前,使用chrome访问github.com,看到一个好项目,想在vs中打开,就像下面这样 这里关联的应用是Microsoft Visual Stdio Web Protocal Handle Selector,当时的情况是有两这样的程序来由你...
  • 我在虚拟机上部署了一个service系统,打开iis浏览页面提示“预设宿主机应用程序”,“确保虚拟机配置允许宾客机打开宿主机应用程序”,虚拟机的防火墙也关闭了,请问是什么原因导致的啊,谢谢?...
  • 需要从当前的应用程序跳转到另一个应用程序的其中一个页面(该页面不是应用程序的入口); 前提: 这解决办法的前提是你需要知道你要跳转的应用程序的包名以及要跳转页面的activity名字, 需要安装要跳转的应用...
  • 我们在编写QT应用程序时,往往期望应用软件只能被打开一个运行实例,可以通过以下代码实现: #include "apa.h" #include &lt;QApplication&gt; #include &lt;QSharedMemory&gt; #...
  • cmd次性打开个应用程序

    千次阅读 2014-11-20 11:11:57
    那就写一个脚本吧,只需要点击次,就可以打开个应用程序了。 :: open some software @echo off start "title" "C:\Program Files (x86)\Netease\POPO\Start.exe" start "title" "C:\Program File...
  • 一般来说用户在Win10上使用的默认账户都不是管理员账户,本地账户...昨天发现了一个修改注册表的方法,亲测有效:1、按下键盘win+R,打开“运行”窗口,输入regedit,弹出注册表;2、将HKEY_LOCAL_MACHINE\Software\...
  • 给自己的应用程序注册一个URL,然后可以通过“别的应用”或者“Safari”来打开“注册了URL”的应用。首先给自己程序注册一个URL,在项目plist文件添加如下内容,见下表: (URL types 开始??) ...
  • 类可以允许我们的应用程序开启一个新的外部程序,并且与这程序进行通讯 我们通过new一个QProcess对象,为其设置路径及命令参数,来启动并发生命令参数到该程序 例如: //程序路径 QString path("...
  • 当在一个应用中启动另一个应用的Activity时失败,并且错误信息为 android Permission Denial: ...... requires null 时,并一定是权限的问题。 如果是缺少某个权限,那么错误信息会是 requires 。 这时,...
  • MFC中应用程序只允许运行一个实例

    千次阅读 2011-09-23 17:02:51
    但在有些情况下为保证应用程序的安全运行,要求程序只能运行一个实例,比如程序要使用只能被一个进程单独使用的特殊硬件(例如调制解调器)时,必须限制程序只运行一个实例。  这里涉及两基本
  • 3126-6.0SDK默认打开允许安装来自未知来源的应用的开关是到/frameworks/base/packages/SettingsProvider/res/values/defaults.xml文件中修改def_install_non_market_apps属性,另外需要注意device目录下的overlay...
  • 在 OS X 安装软件打开提示“已损坏”或者“来自身分不明的开发者”的解决办法 中我们介绍过如何解决无法打开第三方应用的办法,那就是在系统偏好设置的“安全性与隐私”中,临时选择“任何来源”选项。 升级到 ...
  • Mac 所有程序无法打开 您打开应用程序“”因为它可能已损坏或完整 打开电脑发现所有的应用都能打开了,包括siri,safari,system Preferences,Terminal。包括系统自带的和我下载的,键盘和快捷键也无法使用。 ...
  • 安全性异常说明: 应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。 异常详细信息: System.Security.SecurityException: 异常...
  • 欢迎技术交流和帮助,提供IT相关服务,索要源码请联系博主QQ: 21497936,若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:...
  • 允许其他应用启动你的APP

    千次阅读 2016-11-20 20:57:04
    前两课重点讲述方面:从您的应用启动另一个应用的 Activity。 但如果您的应用可以执行对另一个应用可能有用的操作,您的应用应准备好响应来自其他应用的操作请求。 例如,如果您构建款可与用户的好友分享消息或...
  • 很多时候,我们开发的程序,需要单例运行的的功能,即整个应用程序只允许同时运行最多一个实例,重复运行的时候,激活当前实力,显示其界面。  在C#程序中,其解决方案有多重,可以参照Charles Chen 的C#程序只...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 590,034
精华内容 236,013
关键字:

不允许应用打开另一个应用