A应用打开B应用
A应用manifeist.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.appkuajincheng"
......
>
.....
<application
........ >
<activity
android:name=".MainActivity"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".KtActivity"
>
<intent-filter >
<data android:scheme="aaa" />
</intent-filter>
</activity>
</application>
</manifest>
这里配置给.KTActivity的scheme是让B应用setresult可以返回来(这里实验了如果是startActivityForResult返回了只要这一个,不需要像B应用还需要action 或者category)
A应用界面代码:
public class KtActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kt);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.receiver2",Uri.parse("mdm://123"));
intent.putExtra("value", "abcdefg");
startActivityForResult(intent, 123);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
String stringExtra = data.getStringExtra("haha");
Toast.makeText(this, stringExtra, Toast.LENGTH_SHORT).show();
}
}
B应用manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ex00"
........>
......
<application
....>
<activity
android:name=".MainActivity"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SharedActivity"
>
<intent-filter>
///下面这三个缺一不可
<action android:name="com.example.receiver2"></action>
<data android:scheme="mdm"></data>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
B界面代码
public class SharedActivity extends Activity {
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shared);
if(getIntent().getData()!=null){
String host = getIntent().getData().getHost(); //host为123
String value = getIntent().getExtras().getString("value");
Log.e("///"+host, value);
Toast.makeText(getApplicationContext(), host+":"+value, Toast.LENGTH_LONG).show();
}
intent = new Intent("com.example.appkuajincheng.KtActivity",Uri.parse("aaa://"));
intent.putExtra("haha", this.getLocalClassName());
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setResult(111, intent);
finish();
}
});
}
}
需要注意:
1.即使B应用之前不存在于后台,在A点击后也会被拉起,这一点有点像推送。
2.你需要被跨进程打开的界面,不要是launch界面,不然会出错或者,甚至在桌面上都看不到应用图片
网友评论