3

私のレベルでは に対してnullApplication受け取りますが、レベルではそれらを正しく見ることができます。getExtras()Activity

public class MyApplication extends Application 
{
    @Override
    public void onCreate() {
        super.onCreate();
        Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.MyApp");
        if (intent != null){
            String mStaticWorldUrl = intent.getStringExtra("arg1Name");
            String mStaticWorldIconUrl = intent.getStringExtra("arg2Name");
            Log.i("LOG", mStaticWorldUrl + " ---  " + mStaticWorldIconUrl);
        }
    }
}

このコードによって作成されたいくつかのショートカットからアプリを呼び出してい
ます:ExtrasIntent

    // create a shortcut for the specific app
public static void createShortcutForPackage(Context context,
        String packageName, String className, String shortcutName,
        String arg1Name, String arg1Val, String arg2Name, String arg2Val,
        int iconID) {

    Intent intent = new Intent();
    intent.setComponent(new ComponentName(packageName, className));

    PackageManager pm = context.getPackageManager();

    Context pkgContext = createPackageContext(context, packageName);
    if (pkgContext == null)
        return;

    Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    Intent shortcutIntent = pm.getLaunchIntentForPackage(packageName);

    if (arg1Name != null)
        shortcutIntent.putExtra(arg1Name, arg1Val);

    if (arg2Name != null)
        shortcutIntent.putExtra(arg2Name, arg2Val);

    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(context, iconID));
    shortcut.putExtra("duplicate", false);
    context.sendBroadcast(shortcut);
}  

レベルでこれらExtrasをどのように読むことができますか?Application
または、アプリケーションのさまざまなショートカットを作成し、その「パラメーター」データを読み取る他の方法はありますApplicationか?

4

2 に答える 2

4

このApplicationクラスはアプリケーションに対して静的です。アプリのプロセスに対してクラスのインスタンスが 1 つだけ存在します。Intent作成したショートカットではなく、通常の launch でアプリを起動した場合、エクストラは表示されません。HOME または BACK が押されてもアプリ プロセスは停止しないためIntent、パッケージの起動に使用される は、本来あるべきものとは異なる場合があります。

レベルIntentで見る必要はありません。オブジェクトはそこに「送信」されることを意図しておらず、、またはに送信されます。ApplicationIntentActivityServiceBroadcastReceiver

于 2016-08-01T11:29:56.017 に答える