实现这个功能最关键的一点,说三遍,一定用真机测试,真机测试,真机!!!
代码简单,网上也有很多demo。我就是做个记录。
下班回家没带测试机,以为10分钟解决战斗,就做个跳转的demo,结果,两个半小时,一直找原因,绝望之后回单位已测试,直接成功。。。虽然只是一个小demo!!
直接上代码,共有两个app,但是这里我以Activity的名称作为区分,MainActivityA跳转到RequestAction。
先看MainActivityA的代码
package com.ldx.testplugina;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivityA extends AppCompatActivity {
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.setComponent(new ComponentName("com.ldx.testpluginb", "com.ldx.testpluginb.RequestAction"));
intent.putExtra("cylsh", "1170701111111");
intent.putExtra("keystr", "1DSD0EDB00012112");
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("android.intent.action.VIEW");
// 启动带回调的窗体
// 16是回调码
try {
startActivityForResult(intent, 16);
startActivity(intent);
} catch (Exception e) {
Toast.makeText(MainActivityA.this, "没找到Activity", Toast.LENGTH_LONG).show();
}
}
});
}
}
RequestAction代码
package com.ldx.testpluginb;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class RequestAction extends Activity {
private static final String TAG = "RequestAction ";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_t);
Intent intent = getIntent();
String cylsh = intent.getStringExtra("cylsh");
String keystr = intent.getStringExtra("keystr");
Toast.makeText(RequestAction.this,cylsh,Toast.LENGTH_SHORT).show();
Toast.makeText(RequestAction.this,keystr,Toast.LENGTH_LONG).show();
}
}
需要注意的点有
1 被跳转的Activity 在Manifest中需要声明属性
android:exported="true"意思是将当前app暴露出去。
下面是Manifest中的代码
<activity
android:name=".RequestAction"
android:exported="true">
<!-- android:theme="@android:style/Theme.Translucent.NoTitleBar"><!–加上这一行使当前activity变透明–>-->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
|