兩個不同專案之間的跳轉,自定義action
阿新 • • 發佈:2019-01-25
一:無需傳參的供應其他應用呼叫
第一種方法:這種方法在手機的應用程式介面是看不到被呼叫的應用的,
在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的值就為:傳遞值:您好!