1. 程式人生 > >兩個不同專案之間的跳轉,自定義action

兩個不同專案之間的跳轉,自定義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的值就為:傳遞值:您好!