0

私のアプリはアプリを起動してデータを送信する必要があります。私はこれを使用してアプリを起動しました(新規およびバックグラウンドの両方から):

Intent wakeIntent = new Intent(Intent.ACTION_MAIN);

wakeIntent.putExtra("type", type);

wakeIntent.putExtra("scheduleId", id);
wakeIntent.addCategory(Intent.CATEGORY_LAUNCHER);

//welcome is launcher of the target app                                                 

wakeIntent.setClass(getApplicationContext(), WelcomeActivity.class);
wakeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(wakeIntent);

WelcomeActivityは、アプリを新規として起動したときに意図的にデータ「type」、「id」を受信できますが、アプリがすでに起動してバックグラウンドを切り替えている場合、ウェイクアップされたバックグラウンドアプリがデータを受信できないことがあります。方法

よろしくお願いします

4

1 に答える 1

1

これを行うには、現在のアクティビティから次のように起動する前に、共有設定にShared Preferences保存 します。"type","id"WelcomeActivity

たとえば、私はWelcomeActivityボタンクリックから始めていますFirstActivity

public class FirstActivity extends Activity {
SharedPreferences myPrefs;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

       button.setOnClickListener(new OnClickListener() {
       void onClick() {
         //Create 

        myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
        SharedPreferences.Editor prefsEditor = myPrefs.edit();
        prefsEditor.putString("type", type);
        prefsEditor.putString("scheduleId", scheduleId);
        prefsEditor.commit();

       //start WelcomeActivity here
    Intent wakeIntent = new Intent(Intent.ACTION_MAIN);

    wakeIntent.addCategory(Intent.CATEGORY_LAUNCHER);

    //welcome is launcher of the target app                                                 

    wakeIntent.setClass(getApplicationContext(), WelcomeActivity.class);
    wakeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(wakeIntent);

        }
    });
    }
}

そして、アクティビティでは、これを両方 で、そして次のようにWelcomeActivity読んでください:SharedPreferencesonCreateonResume

public class FirstActivity extends Activity {
SharedPreferences myPrefs;

public static boolean status=false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        // this will read when first time start
        myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
        String strtype = myPrefs.getString("type", "nothing");
        String strscheduleId = myPrefs.getString("scheduleId", "0");
        status=true;

    }

    @Override
    protected void onResume() {
        super.onResume();
        // The activity has become visible (it is now "resumed").
       if(status!=true){
                 // this will read when first time start
        myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
        String strtype = myPrefs.getString("type", "nothing");
        String strscheduleId = myPrefs.getString("scheduleId", "0");
       }
    }

    @Override
    protected void onPause() {
        super.onPause();
     // Another activity is taking focus (this activity is about to be "paused").

        // reset counter here
        status=false;
    }
}
于 2012-12-11T16:05:03.033 に答える