0

私の目標は、タブを押すとタブバーにさまざまなアクティビティが表示されることですが、そのうちの 1 つで、メール コンポーザーにつながるメール アカウント チューザーだけを表示するアクティビティは必要ありません。

私の現在の方法は 2.2 と 2.3 で動作していますが、それ以上では動作していません。だからGalaxy 3sで私は得る

 Caused by: java.lang.SecurityException: Given caller package android is not running in process ProcessRecord{}

これが私の現在のコードです。建設的な批判があれば、より良い方法を実行するつもりです。

public class myTabbar extends TabActivity {

TabHost tabHost;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tabHost = getTabHost();
    setTabs();
}

private void setTabs() {
    addTab("Home", R.drawable.home, Home_Page_Activity.class);
    addTab("Map", R.drawable.map, Map_Locations_Activity.class);
    addTab("Email", R.drawable.email, Email_From_Tab.class);    
    addTab("Input", R.drawable.suggestions, Suggestions_Activity.class);
    addTab("More", R.drawable.more, More.class);
}

private void addTab(String labelId, int drawableId, Class<?> c) {           
        Intent intent = new Intent(this, c);
        TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);     
        View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);
        TextView title = (TextView) tabIndicator.findViewById(R.id.title);
        title.setText(labelId);
        ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
        icon.setImageResource(drawableId);      
        spec.setIndicator(tabIndicator);
        if(c == Email_From_Tab.class){
            Intent it=new Intent(Intent.ACTION_SEND);     
            String[] tos={"email@emael.com"};     
            String[] ccs={"email@emael.com"};     
            it.putExtra(Intent.EXTRA_EMAIL, tos);     
            it.putExtra(Intent.EXTRA_CC, ccs);     
            it.putExtra(Intent.EXTRA_TEXT, "The email body text");     
            it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); 
            it.setType("message/rfc822"); 

            spec.setContent(Intent.createChooser(it, "Choose Email Client"));
        }else{
            spec.setContent(intent);
        }
        tabHost.addTab(spec);
}
}
4

1 に答える 1

0

この方法では、サードパーティのアクティビティを独自の UI に埋め込むことはできません。

于 2013-02-27T20:07:16.630 に答える