在android中有时候我们需要做一个APP启动另一个APP,或者是实现做到类似微信或者QQ一样让第三方应用分享内容到自己的APP,那么我们改如何实现呢?下面我们就通过代码来演示实现的方法
ShareActivity.java 第三方应用里面代码的构造
public class ShareActivity extends AppCompatActivity implements View.OnClickListener {
private Button mShare;//分享信息内容到另一个APP
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share);
initView();
}
//初始化View
private void initView() {
mShare = (Button) findViewById(R.id.btn_share);
mShare.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_share:
sendShareMessage();
break;
}
}
//发送分享的信息
private void sendShareMessage() {
Intent intent = getPackageManager().getLaunchIntentForPackage("it.my.share");//主要用于判断用户是否安装了要分享过去的APP
if (intent != null) {
Intent share = new Intent();
//it.my.share被分享应用的包名,it.my.share.GetShareActivity被分享应用所对应的要分享的Activity
share.setClassName("it.my.share", "it.my.share.GetShareActivity");
share.putExtra("message", "我是第三方应用分享过来的信息");
startActivity(share);
} else {
Toast.makeText(getApplicationContext(), "你还没安装该应用,请先安装", Toast.LENGTH_LONG).show();
}
}
}
GetShareActivity.java 接收第三方应用分享过来的内容的Activity
public class GetShareActivity extends Activity {
private TextView mGetShare;//显示被分享过来的内容
private String mShareMessage;//获取分享过来的的信息
private Bundle mBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_share);
mBundle = getIntent().getExtras();
if (mBundle != null) {
mShareMessage = mBundle.getString("message");
}
initView();
}
//初始化View
private void initView() {
mGetShare = (TextView) findViewById(R.id.tv_share);
showMessage(mShareMessage);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
mBundle = intent.getExtras();
if (mBundle != null) {
mShareMessage = mBundle.getString("message");
showMessage(mShareMessage);
}
}
//显示对应分享的信息
private void showMessage(String message){
if (message != null) {
mGetShare.setText(message);
} else {
mGetShare.setText("没有分享过来的内容,应用本身跳转过来的");
}
}
}
在AndroidManifest.xml里面也要配置
<activity android:name=".GetShareActivity"
android:launchMode="singleTask"
>
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.SEND" />
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>