zoukankan      html  css  js  c++  java
  • Intent

    1.隐式Intent

    通过隐式Intent可以在不知道类名称的情况下 也能调用相关应用,也可以跨应用调用。

    首先创建一个新的Activity,然后将视图与Activity绑定。在AndroidMenifest文件中对Activity进行注册。

    默认是跨应用的,如果不跨应用,需对注册时的android:exported 进行处理。

    分别如下:

    public class MyAty extends Activity {
    
        //供其他调用的字符串,要同注册在AndroidMenifest.xml文件中的action -name相同。
        public static final String ACTION="com.example.ru.intenttest.intent.action.MyAty";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.actyvity_my); //将视图与Activity绑定
        }
    }
     <activity android:name=".MyAty" android:exported="false">
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT"></category>
                    <action android:name="com.example.ru.intenttest.intent.action.MyAty"></action>
                </intent-filter>
            </activity>

    调用方式与显示Intent不同,

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   // startActivity(new Intent(MainActivity.this,MyAty.class));//显式Intent
                    startActivity(new Intent(MyAty.ACTION));   //隐式Intent
                }
            });
        }
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            findViewById(R.id.btnStartOther).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    try {
                        startActivity(new Intent("com.example.ru.intenttest.intent.action.MyAty"));//跨应用,隐式调用
                    }
                    catch (Exception e)
                    {
                        Toast.makeText(MainActivity.this,"No open",Toast.LENGTH_SHORT).show();//一定要show出来,(这是没权限时的提示)
                    }
                }
            });
        }

     2.Intent过滤器的相关

    如果AndroidMenifest中有两个或多个相同的action android:name,则会出现选择的情况,如下:

     <activity
                android:name=".MyAty"
                android:label="myaty">
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                    <action android:name="com.example.ru.intenttest.intent.action.MyAty" />
                </intent-filter>
            </activity>
            <activity
                android:name=".MyActivity2Activity"
                android:label="@string/title_activity_my_activity2" >
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                    <action android:name="com.example.ru.intenttest.intent.action.MyAty" />
                </intent-filter>
            </activity>

    这个时候该怎么选择呢,可以通过在一个配置的时候添加一个:

      <activity
                android:name=".MyActivity2Activity"
                android:label="@string/title_activity_my_activity2" >
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT" />
                    <action android:name="com.example.ru.intenttest.intent.action.MyAty" />
                    <data android:scheme="rxmapp"></data> <!--给schema赋个自己写的值-->
                </intent-filter>
            </activity>

    调用的时候代码为:startActivity(new Intent("com.example.ru.intenttest.intent.action.MyAty", Uri.parse("rxmapp://123")));。就显示这个默认的Activity了。

    3,。如果是浏览器可以浏览则需配置

    <category android:name="android.intent.category.BROWSABLE" <!--可被浏览的-->
  • 相关阅读:
    数据类型
    泛型
    如何同步ORACLE和sqlserver的数据
    JBOss 端口没占用!
    Oracle数据库启动流程
    无法通过 128 (在表空间 TEMP 中) 扩展 temp 段
    数组的选择排序和冒泡排序
    Java条形码生成方案及二维码要点
    更改表字段的长度
    jquery 产品查看放大镜组件
  • 原文地址:https://www.cnblogs.com/hometown/p/4631306.html
Copyright © 2011-2022 走看看