Android中为APP创建快捷方式的原理(自己的理解)

我们首先来看Android中为APP创建快捷方式的原理:

从图上可以看出,Android大致分7步完成快捷方式的创建:

第一步:Android系统的launcher程序会调用它的pickShortcut()方法去启动系统的pickActivity程序(应用);

第二步:pickActivity程序(应用)启动后会调用它的CheckIntentFilter()方法,去在系统中寻找可以创建快捷方式的应用有哪些,并且列举出来。只要第三方                     App用<Intent-filter>标签进行了相应的注册(具体如何注册请看下面的代码)就可以被发现并列举出来;

第三步:调用Choseitem()方法选择创建谁的快捷方式;

第四步:完成第三步之后,pickActivity程序(应用)会将选择的消息通过Intent返回给系统的launcher;

第五步:launcher程序获得pickActivity返回的消息后,就会知道创建谁的快捷方式,通过调用ProcessShortcut()方法去启动第三方App中负责创建快捷方式                     的Activity,这个Activity就是第二步中我们提到的用<Intent-filter>标签进行了注册的Activity;

第六步:第三方App中负责创建快捷方式的Activity会将快捷方式的名称,图标和点击后跳转路径通过Intent返回给launcher;

第七部:launcher收到返回的消息后调用本身的ComPleteAddShortcut()方法完成快捷方式的创建,并显示在桌面上;

 

分析完原理后,那么作为第三方开发者应该完成哪几步呢?

我们只需完成如下2步就ok了,其他的事情系统会为我们去做:

首先:用<Intent-filter>标签进行注册

<activity android:name=".CreatShortCut">
    <intent-filter>
        <action android:name="android.intent.action.CREATE_SHORTCUT"/>
    </intent-filter>
</activity>

其中的“CreatShortCut”是负责创建快捷方式的Activity的名字。

然后:向Launcher返回相关数据

public class CreatShortCut extends Activity {

    /**
     * Description
     * 
     * @param savedInstanceState
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        if (getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)) {

            Intent _returnIntent = new Intent();
            _returnIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "csx");// 快捷键的名字
            _returnIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,// 快捷键的ico
                    Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher));
            _returnIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,
                    MainActivity.class));// 快捷键的跳转Intent

            setResult(RESULT_OK, _returnIntent);// 发送
            finish();// 关闭本Activity

        }

    }
}

大功告成!!!(网上也有一些其他方法但是都很复杂,不好使用)

转载于:https://www.cnblogs.com/csxcode/p/4034580.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android上,实现多App录音需要使用音频录制的权限和合适的录音API。下面是实现多App录音的一种可能方法: 首先,需要在AndroidManifest.xml文件中为应用程序添加录音权限。在`<manifest>`标签内添加以下代码: ``` <uses-permission android:name="android.permission.RECORD_AUDIO" /> ``` 接下来,在应用程序代码中,可以使用`MediaRecorder`类来进行录音。可以创建一个录音管理类,处理不同App之间的录音调用。以下是一个示例: ```java public class RecorderManager { private MediaRecorder mediaRecorder; public void startRecording(String outputFile) { try { mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); mediaRecorder.setOutputFile(outputFile); mediaRecorder.prepare(); mediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); } } public void stopRecording() { if (mediaRecorder != null) { mediaRecorder.stop(); mediaRecorder.release(); mediaRecorder = null; } } } ``` 在需要录音的App中,可以实例化`RecorderManager`类并调用其方法来启动和停止录音。例如: ```java RecorderManager recorderManager = new RecorderManager(); recorderManager.startRecording("output_file.mp3"); // ... recorderManager.stopRecording(); ``` 如果需要多个App同时录音,可以将`RecorderManager`类设计为单例类,并在不同的App中共享这个实例。这样,多个App就可以使用同一个录音管理类来进行录音,实现多App同时录音的功能。 需要注意的是,有些机型的系统可能会限制同时进行多个App的录音操作,所以在实际场景中可能需要测试不同的设备和系统版本来确定是否支持多App录音。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值