2014-11-05 2 views
-1

Как я могу переместить активность из Main Application Actitvity (имя MainActivity) к югу активности приложения (имя MainActivity)Как перенести действие основного приложения на активность субприложения в android?

общественных недействительный listAllActivities() бросает NameNotFoundException, ClassNotFoundException {

List<PackageInfo> packages = getPackageManager().getInstalledPackages(0); 

    for(PackageInfo pack : packages) 
    { 

     if (pack.packageName.equals("com.ABC.example")){ 

      ActivityInfo[] activityInfo = getPackageManager().getPackageInfo(pack.packageName, PackageManager.GET_ACTIVITIES).activities; 

     Log.i("PC", pack.packageName + " ::: "); 

      if(activityInfo!=null) 
      { 
       for(int i=0; i<activityInfo.length; i++) 
       { 
        Log.i("actlist", pack.packageName + " ::: " + activityInfo[i].name); 

        if(activityInfo[i].name.equals("com.ABC.example.MainActivity")){ 

         Log.i("activity", pack.packageName + " ::: " + activityInfo[i].name); 

         Intent i1=new Intent(MainActivity.this,activityInfo[i].name.getClass()); 
         startActivity(i1); 

        } 
       } 
      }   
     } 
    }  
} 

журнала кошка :

11-08 12: 00: 19,792: Е/AndroidRuntime (1184): неустранимые: Главный

11-08 12: 00: 19.792: E/AndroidRuntime (1184): java.lang.RuntimeException: не удается запустить активность ComponentInfo {com.example.pride/com.example.pride.MainActivity}: java.lang.SecurityException: Permission Отказ: начиная Намерение {CMP = com.ABC.example/.MainActivity} из ProcessRecord {40684d90

1184: com.example.pride/10034} (PID = 1184, = UID 10034) требует нуль-

11 -08 12: 00: 19.792: E/AndroidRuntime (1184): at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1647)

11-08 12: 00: 19.792: E/AndroidRuntime (1184): at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1663)

11-08 12: 00: 19,792: E/AndroidRuntime (1184): в android.app.ActivityThread.access $ 1500 (ActivityThread.java:117)

11-08 12: 00: 19,792: E/AndroidRuntime (1184): at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:931)

11-08 12: 00: 19.792: E/AndroidRuntime (1184): at android.os.Handler.dispatchMessage (Handler.java:99)

11-08 12: 00: 19,792: Е/AndroidRuntime (1184): в android.os.Looper.loop (Looper.java:123)

11-08 12: 00: 19.792: E/AndroidRuntime (1184): at android.app.ActivityThread.main (ActivityThread.java:3683)

11-08 12: 00: 19.792: E/AndroidRuntime (1184): на java .lang.reflect.Method.invokeNative (Native Method)

+1

Что такое «вспомогательная активность приложения»? – CommonsWare

+0

спасибо, что это com.ABC.пример.MainActivity. Я хочу перейти от основной операции приложения. – Ghanshyam

+0

Извините, я до сих пор не понимаю ваш вопрос, а также то, что вы пытаетесь сделать, и не ваша проблема. –

ответ

0

Вы можете запустить Activity другое приложение из приложения, пока он находится в открытом доступе ("exported="true" или она имеет <intent-filter>). Вы делаете это:

Intent i1=new Intent(MainActivity.this,activityInfo[i].name.getClass()); 
    startActivity(i1); 

Это не будет работать, потому что вы использовали 2-аргумент Intent конструктор. Этот конструктор берет «имя пакета» из первого аргумента (это будет содержать имя пакета вашего приложения) и имя класса для действия из второго аргумента.

Вы хотите сделать это:

Intent i1=new Intent(); 
    i1.setClassName(activityInfo[i].packageName, activityInfo[i].name); 
    startActivity(i1); 

Таким образом, вы настраиваете имя пакета и имя класса активности, используя информацию из ActivityInfo объекта.

+0

Большое вам спасибо за ваше время и решение. – Ghanshyam

+0

, но я до сих пор не понимаю, так, значит, доступно другое приложение? это когда работает? Я добрался до информации только. без использования намерения. – Ghanshyam

+0

Его не разрешить доступ к SecurityException: отказ от разрешения: начиная с намерения – Ghanshyam

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