您的位置:首页 > 其它

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

2013-09-09 15:41 597 查看
一:无需传参的供应其他应用调用

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

在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的值就为:传递值:您好!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: