App之间Activity的使用

App之间的Activity的使用

1.调用其他程序中的Activity

1.1 直接拨号
调用系统的拨号功能拨打电话,拨号的功能对应的Action是Intent.ACTION_CALL,同时需要为这个Action指定一个Uri
代码如下:

    Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:15623069968"));
        startActivity(callIntent);
        注意:
        权限的申请。

1.2 将电话号码传入拨号界面
将电话号码指定传入Android内置的拨号程序。
代码如下:

 Intent dialIntent=new Intent(Intent.ACTION_DIAL,Uri.parse("tel:15623069968"))
     startActivity(dialIntent);

1.3调用拨号程序
调用系统自带的拨号界面
代码如下:

 Intent dialerIntent=new Intent("com.android.action.TOUCH_DIALER");
     startActivity(dialerIntent);

1.4浏览网页
内置的web浏览器对外提供的Action
代码如下:

     Intent webIntent=new Intent(Intent.ACTION_VIEW,Uri.parse("https://www.baidu.com/"));
      startActivity(webIntent);

1.5 向E-mail客户端传递E-mail地址
E-mail客户端提供了一个ACTION,
代码如下:

 Intent intent=new Intent(Intent.ACTION_SENTO,Uri.parse("mailto:WanHua@abc.com"))
       startActivity(intent);

1.6查看联系人
代码如下:

 Intent contactListIntent=new Intent("com.android.contacts.action.LIST_CONTACTS);
     startActivity(contactListIntent);

1.7 显示系统设置界面
显示系统设置界面的Action为”android.settings.SETTINGS”;
代码如下:

     Intent setIntent=new Intent("android.settings.SETTINGS");
     startActivity(setIntent);

      显示设置WIFI界面
      Intent wifiSetIntent=new Intent("android.settings.WIFI_SETTINGS");
       startActivity(wifiSetIntent);    

1.8启动处理音频的程序
通过Intent.ACTION.GET_CONTENT动作来选择拥有相同类型的引用。
代码如下:

  Intent audioIntent=new Intent(Intent.ACTION_GET_CONTENT);
     audioIntent.setType("audio/**")
      startActivity(audioIntent);    

2.自定义ActivityAction

 在androidMainifest.xml文件中为Activity定义的Action.都是在应用程序内部调用。这些自定义的Action同样可以在
 其他应用程序中调用。
       <activity android:name="com.example.administrator.diycode.activity.DiycodeMainActivity">
            <intent-filter>
                <action android:name="android.intent.action.DIYCODE_MAIN_ACTIVITY" />

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


         Intent otherIntent=new Intent("android.intent.action.DIYCODE_MAIN_ACTIVITY");
                startActivity(otherIntent);     


             可以在app内部启动。也可以在第三方app中启动 


         /**
     * 通过包名启动第三方app
     * @param context
     * @param packageName
     */
    public static  void startThridApp(Context context,String packageName){
        try {

            Intent minIntent = context.getPackageManager()
                    .getLaunchIntentForPackage(packageName);
            context.startActivity(minIntent);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 已知包名和类名启动应用程序
     * @param context
     * @param packageName
     * @param className
     */
    public static  void startThridApp(Context context,String packageName,String className){
        try {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            ComponentName cn = new ComponentName(packageName, className);
            intent.setComponent(cn);
            context.startActivity(intent);
        }catch (Exception e){
            e.printStackTrace();
        }
    }


    /**
     * 已知第三方应用的包名和指定类的action启动,可以启动第三方应用的指定Activity,
     * 并且传递参数,指定Activity必须设置Action;
     * @param context
     * @param packageName
     * @param action
     * @param type
     * @param count
     */
    public static  void startThridApp(Context context,String packageName,String action,String type,int count){
        try {
            Intent mIntent = new Intent();
            mIntent.setPackage(packageName);//包名
            mIntent.setAction(action);//action
            mIntent.putExtra("a", type);
            mIntent.putExtra("c", count);
            context.startActivity(mIntent);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

3.ActivityGroup

ActivityGroup是Activity的子类,通过ActivityGroup可以将多个Activity放到一个Activity上面。这样可以单独实现屏幕的
某些部分,然后将他们组合在一起。ActivityGroup的关键是通过LocalActivityManager.startActivity方法获取Activity最顶层窗口。
再通过Window.getDecorView方法获得窗口最顶层的视图。

activity之间切换动画的效果

public void overridePendingTransition (int enterAnim, int exitAnim)
其中:
enterAnim 定义Activity进入屏幕时的动画,即将展示页面的动画
exitAnim 定义Activity退出屏幕时的动画,即将关闭或者被隐藏页面的动画
overridePendingTransition 方法必须在startActivity()或者 finish()方法的后面。
startActivity()之后使用定义的是入场动画。
finish()之后使用定义的是出场动画。
注意,在定义入场动画时,应该确保在主线程运行,否则有可能会无效。所以,
尽量在调用处用Activity.runOnUiThread(new Runnable() {XXXX});包裹。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值