2015-09-04 3 views
1

Ii есть код, чтобы открыть калькулятор из другого приложения, код работает хорошо, но я могу изменить название пакета, чтобы открыть другое приложение не работаетандроид студии не могу открыть другое приложение

Кто-нибудь знает, что Я должен изменить

package com.example.zeluis.c4; 

import android.content.ComponentName; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 

public class c4 extends AppCompatActivity { 
    // aki comesa abrir os app 

    private String packge_name = "com.android.calculator2"; 
    private String class_name = "com.android.calculator2.Calculator"; 
    private Button bt; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_c4); 
     bt = (Button) findViewById(R.id.but); 
     bt.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       launchCall(); 
      } 
     }); 

    } 

    protected void launchCall() { 
     // TODO Auto-generated method stub 
     Intent intent = new Intent(); 
     intent.setAction(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_LAUNCHER); 
     intent.setComponent(new ComponentName(packge_name, class_name)); 
     try { 
      startActivity(intent); 
     } catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
     } 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_c4, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Моей идеи состояла в том, чтобы изменить имя пакета, чтобы открыть другое приложение, например, как whatapp или Navfree .etc

+1

Я не уверен, что такое точный вопрос, вы говорите, что 'launchCall()' не работает? Если да, покажите, что он делает. –

+0

Вы предоставили все, кроме кода, который нам действительно нужно увидеть ... –

+0

Теперь я прошел весь код. этот код работает, но я хочу открыть другое приложение, а не калькулятор i can not –

ответ

0

Проще всего спросить менеджер пакетов для «запускающих намерений» для пакет:

private static void launchPackage(Context context, String packageName) { 
    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); 
    try { 
     context.startActivity(intent); 
    } catch (ActivityNotFoundException ex) { 
     Toast.makeText(context, "Unknown package, or has no launching activity", Toast.LENGTH_SHORT).show(); 
    } 
} 

Таким образом, вам не нужно знать имя класса активности пусковой установки. Менеджер пакетов посмотрит это в манифесте пакета.

Однако, если вы проверите намерение, которое оно вернет, вы увидите, что это в основном то же, что и ваш код. Поэтому я подозреваю, что вы используете неправильные значения для packageName и/или className.

Вы пишете комментарий, который вы тестируете с помощью private String class_name = "com.navfree.android.OSM.ALL.com.navfree.android.OSM.ALL-2";, который не похож на имя класса для меня.

Смежные вопросы