我的应用程序已打开,而不是我调用的特定活动

时间:2013-12-03 21:13:37

标签: android

我正在尝试在拍摄照片时显示对话框,因此我在默认相机应用程序拍摄的照片上设置了广播接收器。 我读到我需要调用一个活动来实现这一点。我设置了活动,因此清单中的主题就像透明

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen

这是我的代码

public class CameraEventReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

   Cursor cursor = context.getContentResolver().query(intent.getData(),      null,null, null, null);
   cursor.moveToFirst();
   String image_path = cursor.getString(cursor.getColumnIndex("_data"));


   Toast.makeText(context, "New Photo is Saved as : -" + image_path, Toast.LENGTH_SHORT).show();
   Intent i = new Intent(context, DialogActivity.class); 
   i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
   context.startActivity(i);

 }


}

问题是我的主应用程序活动显示在Dialog活动后面,以便显示主要活动。我只想让对话框活动显示在图片的顶部。 有办法解决这个问题吗?

谢谢

编辑:根据要求,我的清单:

   <application
        android:allowBackup="true"
        android:name="MyApplication"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.xx.xx.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".DialogAcitivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="com.xx.xx.DIALOGACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
         </activity>
        <receiver
        android:name=".CameraEventReceiver"
        android:enabled="true" >
        <intent-filter>
            <action android:name="com.android.camera.NEW_PICTURE" />
            <action android:name="android.hardware.action.NEW_PICTURE" />
            <data android:mimeType="image/*" />
        </intent-filter>
    </receiver>

    </application>

我的按钮代码,基本上要求用户输入值:

protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();


        promptUser();
    }

    private void promptUser() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        final EditText input = new EditText(this);
        builder.setMessage(R.string.msg)
.setCancelable(false)
.setView(input)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                String value = input.getText().toString();

                storeValue(value);

                 dialog.dismiss(); 



        }).setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {

                dialog.dismiss();
            }
        });
        AlertDialog alert = builder.create();

           alert.show();

    }

2 个答案:

答案 0 :(得分:2)

你的应用程序活动显示在对话框后面的原因是因为android正在切换整个活动任务。你的对话活动是(我假设)与你的其他活动在同一个任务中开始。

你想要的是给你的对话活动一个不同的任务亲和力,而不是你的其他活动的(默认)亲和力。

<activity
    ...
    android:taskAffinity="com.foo.bar.myaffinity"/>

现在,此活动不会启动与其他活动相同的任务,当您启动活动时,其他活动将不会显示在其后面。

答案 1 :(得分:1)

Check this post

您想要的是从结果中获取图像,然后在某些活动的布局中显示它。显示图像后,启动对话框。