appA拉起appB 如果appB已經在後臺運行 獲取不到參數的解決

appA 應用

/**
     * 通過包名拉起app
     * @param packagename  要拉起app的包名
     */
    public static void doStartApplicationWithPackageName(String packagename) {
        // 通過包名獲取要跳轉的app,創建intent對象
        Intent intent = PageManager.getCurrentActivity().getPackageManager().getLaunchIntentForPackage(packagename);
        //測試參數隨機數
        Random rd = new Random();
        // 這裏如果intent爲空,就說名沒有安裝要跳轉的應用嘛
        if (intent != null) {
            // 這裏跟Activity傳遞參數一樣的嘛,不要擔心怎麼傳遞參數,還有接收參數也是跟Activity和Activity傳參數一樣
            intent.putExtra("name", "name"+":"+rd.nextInt(100));
            intent.putExtra("birthday", "birthday"+":"+rd.nextInt(100));
            PageManager.getCurrentActivity().startActivity(intent);
        } else {
            // 沒有安裝要跳轉的app應用,提醒一下
            Toast.makeText(PageManager.getCurrentActivity().getApplicationContext(), "喲,趕緊下載安裝這個APP吧", Toast.LENGTH_LONG).show();
        }
    }

appB應用

AndroidManifest.xml

<activity android:name=".WellcomeActivity"
            android:launchMode="singleInstance"><!--必須設置成這個模式-->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

啓動頁面可以獲取到參數 根據參數跳轉不同頁面  有可能singleInstance加載動畫和我們應用內部加載動畫不一致 我們也可以自定activity啓動關閉動畫

public class WellcomeActivity extends AppCompatActivity {
    private final static int MSG_200 = 200;
    Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case MSG_200:
                    Intent intent = new Intent(WellcomeActivity.this, MainActivity.class);
                    startActivity(intent);
                    overridePendingTransition(R.anim.right_in,R.anim.right_out);//爲了使動畫統一
                    finish();
                    break;
                default:
                    break;
            }
        }
    };
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wellcome);
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            String name = bundle.getString("name");
            String birthday = bundle.getString("birthday");
            if (name != null && birthday != null) {
                Toast.makeText(getApplicationContext(), "name:" + name + "    birthday:" + birthday, Toast.LENGTH_SHORT).show();
            }
        }
        mHandler.sendEmptyMessageDelayed(MSG_200, 3000);
    }
    @Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.right_in,R.anim.right_out);//爲了使動畫統一
    }
}

right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="100%p"
        android:toXDelta="0"
        android:duration="300"/>
</set>

right_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0"
        android:toXDelta="-100%p"
        android:duration="300"/>
</set>

效果圖

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章