两个不同项目之间的跳转,自定义action

一:无需传参的供应其他应用调用

第一种方法:这种方法在手机的应用程序界面是看不到被调用的应用的,

在AndroidManifest.xml中被调用的Activity的节点下自定义Action,在调用方使用Intent(String action)构造方法调用

注意:两个Activity可以属于不同的应用

例如:被调用方的AndroidManifest.xml

<activity
            android:name="com.sym.second.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                
				<action android:name="com.sym.myaction"/>
				<category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

调用方调用:

btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				try {
					Intent intent = new Intent("com.sym.myaction");
					startActivity(intent);
				} catch (Exception e) {
					Toast.makeText(MainActivity.this, "该界面不存在!", Toast.LENGTH_LONG).show();
				}
			}      
		});

第二种方法:这种方法在手机的应用程序界面是看得到被调用的应用的

例如:被调用方的AndroidManifest.xml

<activity
            android:name="com.sym.second.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

调用方调用:

ComponentName componetName = new ComponentName(
			// 这个是另外一个应用程序的包名
					"com.chartcross.test",
					// 这个参数是要启动的Activity
					"com.chartcross.test.MainActivity");
			Intent intent = new Intent();
			intent.setComponent(componetName);
			startActivity(intent);


 

二:需要传参的供应其他应用调用

例如:被调用方的AndroidManifest.xml

<activity
            android:name="com.sym.second.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                
				<action android:name="com.sym.myaction"/>
				<data android:scheme="my"/>
				<category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>


 

调用方调用:

btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				try {
					Uri uri = Uri.parse("my://传递值:您好!");
					Intent intent = new Intent("com.sym.myaction", uri);
					startActivity(intent);
				} catch (Exception e) {
					Toast.makeText(MainActivity.this, "该界面不存在!", Toast.LENGTH_LONG).show();
				}
			}      
		});


在被调用方的接收传递过来的参数:

 

Uri uri = getIntent().getData();
		String str = uri.getHost();
		tv.setText(str);

这样str的值就为:传递值:您好!

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常感谢您的提问!以下是我的回答: 1. 参考Intent显式跳转样例建立两个Activity,并同时生成对应栏目: 首先,在Android Studio中创建一个新的项目。然后,在项目中创建两个新的Activity,分别命名为Activity1和Activity2。接下来,您需要在AndroidManifest.xml文件中声明这两个Activity,以便系统可以识别它们。在AndroidManifest.xml文件的<application>标记内部,添加以下代码: ``` <activity android:name=".Activity1"/> <activity android:name=".Activity2"/> ``` 然后,您需要在Activity1和Activity2的布局文件中添加一个TextView,用于显示栏目名称。最后,您需要在MainActivity中添加代码以启动这两个Activity。在MainActivity中,您可以添加两个按钮,每个按钮对应一个Activity。当用户点击按钮时,MainActivity将启动相应的Activity,并将栏目名称作为Extra数据传递给Activity。在Activity中,您可以从Intent中提取Extra数据,并将其显示在TextView中。 2. 分析action/category,命名并引用,应用Intent隐式方式实现页面间跳转: Intent隐式跳转可以让您启动另一个应用程序中的Activity,而无需知道Activity的类名。相反,您只需要指定所需的Intent过滤器,该过滤器由Action和Category组成。Action指定要执行的操作类型,Category可用于进一步过滤Intent。 首先,您需要为您的Activity定义一个Intent过滤器。在AndroidManifest.xml文件的<activity>标记中,添加以下代码: ``` <intent-filter> <action android:name="com.example.myapp.ACTION_VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="com.example.myapp.CATEGORY_CUSTOM"/> <data android:scheme="http"/> <data android:host="www.example.com"/> <data android:pathPrefix="/path"/> </intent-filter> ``` 在上面的代码中,Action的名称为com.example.myapp.ACTION_VIEW,Category包括DEFAULT和自定义的CATEGORY_CUSTOM,Data指定了URI的方案、主机和路径前缀。这将使您的Activity响应具有相同Intent过滤器的Intent。在另一个应用程序中,您可以使用相同的Intent过滤器启动您的Activity。 3. 建立一个新的项目,在主页面顶部构造一个含有5个内容的菜单项: 首先,您需要在MainActivity的布局文件中添加一个Toolbar。Toolbar是一个可定制的视图,可替代应用程序的ActionBar。在布局文件中,您可以添加以下代码: ``` <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:elevation="4dp" android:minHeight="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> ``` 接下来,在MainActivity中,您需要设置Toolbar作为ActionBar,并添加菜单项。您可以使用以下代码完成此操作: ``` setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item_1: // 处理菜单项1的点击事件 return true; case R.id.menu_item_2: // 处理菜单项2的点击事件 return true; case R.id.menu_item_3: // 处理菜单项3的点击事件 return true; case R.id.menu_item_4: // 处理菜单项4的点击事件 return true; case R.id.menu_item_5: // 处理菜单项5的点击事件 return true; default: return false; } } }); ``` 在上面的代码中,您需要将Toolbar设置为ActionBar,并使用setOnMenuItemClickListener()方法设置菜单项的点击事件。在onMenuItemClick()方法中,您可以根据用户点击的菜单项执行相应的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值